1.启动优化: application中不要做大量耗时操作,如果必须的话,建议异步做耗时操作
2.布局优化:使用合理的控件选择,少嵌套。(合理使用include,merge,viewStub等使用)
3.apk优化(资源文件优化,代码优化,lint检查,.9.png,合理使用shape替代图片,webp等)
4.性能优化,网络优化,电量优化:
避免轮询,尽量使用推送。
应用处于后台时,禁用某些数据传输
限制访问频率,失败后不要无限重连
选用合适的定位服务(GPS定位,网络定位,被动定位)
使用缓存
startActivityForResult替代发送广播
5.内存优化:
循环尽量不使用局部变量
避免在onDraw中创建对象,onDraw会被频繁调用,容易造成内存抖动。循环中创建大的对象,也是如此。
不用的对象及时释放
数据库的cursor及时关闭
adapter使用缓存
注册广播后,在生命周期结束时反注册
及时关闭流操作
图片尽量使用软引用,较大的图片可以通过bitmapFactory缩放后再使用,并及时recycler。另外加载巨图时不要 使用setImageBitmap或setImageResourse或BitmapFactory.decodeResource,这些方法拿到的都是bitmap的对象,占用内存较大。可以用BitmapFactory.decodeStream方法配合BitmapFactory.Options进行缩放
避免static成员变量引用资源耗费过多实例
避免静态内部类的引用
具体可以参考:Android:最全面&详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)
补充电量优化:Android 电量优化概览
几个常用的性能测试工具:Prefetto, Emmagee,Systarce。如果需要更加深入直观具体的分析可以使用这几个工具。教程很多,直接搜就好。
工具推荐教程:Perfetto详细解析
如果不想下载这些测试工具,也可以用AS自带的检测工具:
AndroidStudio自带的内存泄漏检测工具Profiler:
1.用Android Studio打开当前应用项目,连接手机,打开当前项目App;
点击编辑器上面的这个图标启动应用,就可以看到底部的Profiler视图显示的CPU,内存,网络的使用情况:(如果底部没有Proflier视图,可以在View->Tool Windows->Profiler调出)
2、 开启完成,已连接。此时正常使用你的App功能,把可能出现内层泄漏的模块测试一下;
3.测试完成,直接点击MEMORY,选择capture_heap dump,然后点击record。记录下你的测试的内层泄漏日志
4.第3步生成内层泄漏日志之后,后面会显示内层泄漏个数和方法列表。如果Leaks的数目不是0,就会出现内层泄漏个数并显示黄色叹号。这个时候找到下方显示黄色叹号的方法类。右键找到对应references方法。再根据references对应的类名,找到在项目中调用它的地方。然后就找到内层泄漏的地方啦。