App优化总结

一.启动优化

启动加速方向

  1. 利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验;
  2. 避免在启动时做密集沉重的初始化(Heavy app initialization);
  3. 定位问题:避免I/O操作、反序列化、网络操作、布局嵌套等。

方向一

为启动的Activity设置一个主题,指定android:windowBackground属性



    
    
        
    

然后再Activity的onCreate方法之前,切换到我们自己的主题

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.loadingStyle); // 在super.onCreate之前调用
        super.onCreate(savedInstanceState);

方向二

MultiDex优化 可以参考Multidex(一)之源码解析

异步,延迟初始化第三方组件

方向三

DDMS实际查看每个耗时方法,定位问题

无用代码,重复逻辑,

App优化总结_第1张图片

点击Record a method trace之后,启动app,然后就可以看到每个方法执行的时间了

二.电量优化

广播:应用退出或者位于后台是停止广播

数据传输:蓝牙,wifi,移动网络

位于后台时禁用某些传输,避免冗余重复数据传输,数据传输过程中要压缩数据大小,合并网络请求,避免轮询

定位:及时注销位置监听器,位置更新监听频率,

位置服务选择:

1.GPS定位,精度高,10米之内,电量消耗最高

2.网络定位,精度低,几百米之内

不同时机要采用不同的定位方式,通常使用第三方的定位SDK,因为它们再定位时间,定位精度以及耗点量都做了优化

AlarmManager(唤醒API,在特定的时候广播一个intent)

避免频繁唤醒,不使用的时候要尽快取消

WakeLock(保持设备处于唤醒状态的API,某些情况下,需要阻止设备休眠)

及时释放锁,

三.网络优化

  1.   避免DSN解析,直接访问IP地址
  2. 合并网络请求(DNS查找,三次握手,HTTPS还需要TLS握手)
  3. 预先获取数据
  4. 避免轮询
  5. 优化重连机制
  6. 离线缓存
  7. 压缩数据大小
  8. 不同网络环境使用不同的超时策略
  9. CDN使用




你可能感兴趣的:(App优化总结)