10 天才少年_

尚未进行身份认证

七年安卓应用开发

等级
TA的排名 1w+

西游记团队中如果需要裁掉一个人,会先裁掉谁?

2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图:裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢?我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么?西游记团队组成:1.唐僧作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...

2019-11-23 16:04:17

漫画设计模式:每周一篇设计模式之适配器模式

适配器模式:将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。官方定义不太好理解,我翻译一下,在适配器模式中,可以通过创建适配器进行接口转换,让不兼容的接口变成兼容。比如中国人家庭里面都用的国标的充电器,那插座肯定也是国标的,不然没有办法充电,但是当你买了一个港行的ipad的时候,他的充电器却是港版插头,为了能够正常充电,我们就需要买一个...

2019-11-21 20:12:39

漫画设计模式:每周一篇设计模式之观察者模式

如上图,产品经理接到老板通知,需要临时新增需求,万能的产品经理,立刻通知所有程序员去实现该需求。小安用程序的形式实现上图的过程,代码如下:/** * @Author: 欢迎关注公众号:程序员小安 * @description: 老板 * @CreateDate: 2019/10/30 * @Version: 1.0 */public class Boss { publ...

2019-10-30 21:33:38

漫画设计模式:每周一篇设计模式之策略模式

小安实现的代码如下:/** * @Author: 程序员小安 * @description: 购物车 * @CreateDate: 2019/10/27 * @Version: 1.0 */public class ShopCart { public ShopCart() { } public void pay(String payType) { ...

2019-10-27 14:47:27

漫画设计模式:每周一篇设计模式之单例模式

【首先不管何种形式实现单例模式,构造方法一定是私有的,这是大前提。】饿汉模式饿汉模式中的类实例是当类被加载时就被初始化出来的,所以在应用初始化时,会占用不必要的内存。同时,由于该实例在类被加载的时候就创建出来了,所以他是线程安全的。因为类的初始化是由ClassLoader完成的,利用了ClassLoader的线程安全机制,ClassLoader的loadClass方法在加载类的时候...

2019-10-10 22:17:50

Android Studio依赖第三方maven库,出现Failed to resolve:***错误

1.前言这个问题折腾了一个上午,写下来记录一下,也让帮助其他人快速解决类似问题吧。2.问题描述项目在一台电脑上正常编译,当换了另外一台电脑后,依赖第三方maven库,下载AAR/JAR包时,一直报Failed to resolve的错误,如下图所示:一开始怀疑是网络问题,sdk版本不匹配,上网搜了一大堆,有人说APP根目录的gradle文件增加如下代码:allprojects{ ...

2019-10-10 12:06:13

漫画安卓:Android EventBus从使用到源码解析,这一篇就够了

基本使用步骤1)定义事件Eventpublic class MyEvent { public MyEvent(String id, String message) { this.id = id; this.message = message; } public String id; public String mess...

2019-09-29 20:08:03

漫画安卓:LeakCanary源码解析

public static RefWatcher install(Application application) { return ((AndroidRefWatcherBuilder)refWatcher(application).listenerServiceClass(DisplayLeakService.class).excludedRefs(Androi...

2019-09-27 11:51:00

漫画安卓:使用LeakCanary快速简单排查Android中的内存泄露

1)在项目的build.gradle文件添加: debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5' testCompile 'com.squareup...

2019-09-26 15:27:47

LeakCanary源码解析

1.前言前面文章已经讲解过如何使用LeakCanary快速的排查Android中的内存泄露,链接地址:LeakCanary-------快速简单排查Android中的内存泄露,这篇文章将从源码的角度分析LeakCanary排查内存泄漏的原理。2.主要原理通过registerActivityLifecycleCallbacks(Application.ActivityLifecycleCall...

2019-09-23 19:10:31

Android性能优化之冷启动优化

1.前言APP冷启动比较慢,点击桌面图片需要用户等待很久,体验较差。目标:启动时间缩短1000ms2.APP启动方式冷启动(Cold start)场景:冷启动是指APP在手机启动后第一次运行,或者APP进程被kill掉后在再次启动。可见冷启动的必要条件是该APP进程不存在,这就意味着系统需要创建进程,APP需要初始化。在这三种启动方式中,冷启动耗时最长,对于冷启动的优化也是最具挑战的。...

2019-08-26 19:35:18

R文件报错的原因

1.前言一般R文件报错,无非是资源文件错误,图片命名错误,但是编译都会报错,可以很快解决。但是前几天,引入一个第三方aar包后,项目编译正确,但是就是R文件报错,找不到R文件,整个项目一片报红。2.错误方法CleanProjectRebuildProject我相信很多人,第一反应就是这两个版本,但是都试了一遍后,发现依然报错。我当时把studio关闭重开了几遍,甚至电脑都...

2018-10-01 14:58:26

IntentService源码讲解

1. 前言Broadcast Receiver用于接收并处理广播通知,众所周知,onReceive(Context curContext, Intent broadcastMsg)方法用于接受通知,并在该方法体内处理消息,但是onReceive中代码的执行时间不要超过5s,否则会报ANR错误,导致程序异常。一般这种情况,会有两个方案:1)在onReceive方法中开启子线程,做耗时操作...

2018-06-01 00:32:36

Android HandlerThread使用介绍以及源码解析

1. 前言首先,看一下官方对HandlerThread的解释:Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.翻译中文为:Handl...

2018-05-30 21:10:32

Android开发MVP模式--项目实战

1 前言苏宁+App是苏宁易购集团零售云研发中心分销研发中心主要产品之一,由于项目处于初期阶段,业务逻辑复杂,导致业务需求变动快,常常在开发甚至测试过程中出现界面或者后台接口调整的情况。 App客户端如何在外部需求不断变化的情况下,降低模块耦合,尽可能减少每次代码修改量,一方面减少开发人员的工作量,另一方面降低测试工程师的工作量,最终顺利完成项目迭代开发。2 为什么使用MVP模式...

2018-01-13 11:52:24

Android SharedPreference 源码分析(一)

1. 前言众所周知,SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。2.基本概念SharedPr

2017-12-09 17:39:41

Fiddler查看Https网络请求

1. 前言fiddler抓取http网络请求相信大家都会,这边不继续说了,主要讲解如何利用fiddler抓取https的网络请求。2.使用方法正常情况下,手机无线配置完代理,可以抓取http,但是要抓https请求的时候,会发现,全部都是如下的报文。 为了可以跟https一样看到具体请求报文,需要通过如下步骤配置:1)打开fiddler–>tools–>Telerik Fiddler Option

2017-07-28 15:37:45

获取手机唯一识别码IMEI

1. 前言获取IMEI相信大家非常熟悉,但是项目中使用时,发现当手机卡为电信的时候,获取的并不是IMEI,而是MEID,什么是MEID,为什么会出现这种情况呢? IMEI国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。目前GSM和WCDMA

2017-07-28 11:45:00

Jenkins实现Android自动打包

1. 前言14年在给天天酷跑团队做sdk的算是第一次接触到Jenkins,当时有种乡下孩子进城的感觉,被jenkins流弊的体验所折服,只需要一个按钮点一下就坐等出包,不用IED繁琐的打包流程。当然自动化打包好处很多,比如定时出包,可以每天晚上12点出包;还有一种情况场景也急需解决,比如正在你本地在修改代码,突然测试要求出包,你本地代码可能一团糟,工程完全跑不起来,很不方便。当然Jenkins好处很

2017-06-04 13:44:52

APK瘦身之删除多余资源文件

1. 前言移动端项目迭代很频繁,一般半年左右,app包就变得很大,并且包含很多废弃的图片,layout文件,本篇文章主要讲如何快速定位出废弃资源,并快速删除。这次瘦身使用的工作是Android Studio Lint工具 , 用瘦身前APK为21.5M, 瘦身后为18.4M. 瘦身结果为APK大小减少了3.1M(14%)2.准备工作1.Android Studio Lint只能定位出废弃的资源

2017-04-17 13:29:15

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。