2、优化 http://www.jianshu.com/p/f7006ab64da7
内存优化
开发开始选取比较优秀的第三方框架,使用leakcanary检测内存泄露,使用低配机做开发测试机发现 ANR(卡顿,无响应)的界面,使用简单的树形结构布局,
OOM(数据库,文件流游标对象的关闭,
适配器中的convertView的复用、
图片的缓存内存缓存LruCache内存缓存,文件缓存
尽量少的使用全局变量、避免使用枚举、
避免长生命周期对象被短生命周期对象引用,比如activity中使用Handler
使用线程池管理线程
bitmap的释放,软引用,压缩
- // 先判断是否已经回收
- if(bitmap != null && !bitmap.isRecycled()){
- // 回收并且置为null
- bitmap.recycle();
- bitmap = null;
- }
- //使用软引用
- public Bitmap getBitmapByPath(String path) {
- // 从缓存中取软引用的Bitmap对象
- SoftReference<Bitmap> softBitmap = imageCache.get(path);
- // 判断是否存在软引用
- if (softBitmap == null) {
- return null;
- }
- // 取出Bitmap对象,如果由于内存不足Bitmap被回收,将取得空
- Bitmap bitmap = softBitmap.get();
- return bitmap;
- }
分析工具:TraceView,Heap,Android Memory Monitor,Hierarchy Viewer(/hai e ra kei/View层级分析),利用log打印时间判断耗时
UI优化,合理布局,使用兼容、优秀的控件,避免(重复绘制,频繁刷新,计算尺寸)
电量优化,优化网络调用减少刷新,GPS定位减少更新频率,合理使用后台服务service
网络访问框架:okhttp、retrofit、android-async-http、volley
图片加载框架:Android-Universal-Image-Loader、Glide、Fresco、Picasso
缓存框架:DiskLruCache、 Robospice
Json解析框架:Gson、Fastjson、Jackson
事件总线:EventBus、Otto
ORM框架:GreenDAO、Litepal
还有其他各种各样开源的自定义控件、动画等。除了以上提到的开源框架,也包括一些不开源的SDK
数据统计:友盟统计,百度统计,谷歌统计
奔溃搜集:腾讯bugly、bugtags...
云存储:七牛...
即使通讯:环信、融云、阿里百川...
推送:小米推送、腾讯推送、百度推送...
安全加固:360加固宝、爱加密.
- JNI开发流程
- AIDL流程
- 事件处理机制
- 反射机制,应用,注解
- Handler机制和AsyncTask原理,线程池
- apk文件的格式,android的框架结构
- activity和fragment声明周期,activityA打开activityB各生命周期的调用
- 自定义view的流程注意点
- 设计框架和设计模式
- 屏幕适配和手机适配
- 内存优化,网络优化,电量优化,安全优化
- 图片加载框架和原理,图片处理压缩