App优化总结

一.启动优化

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

方向一

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

<style name="Launcher">
        <!--利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验-->
        <item name="android:windowBackground">@drawable/loading_style</item>
    </style>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
    <item android:drawable="@color/white"/>
    <item>
        <bitmap android:src="@drawable/img_loading"
            android:gravity="center"
            />
    </item>
</layer-list>

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

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

方向二

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

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

方向三

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

无用代码,重复逻辑,


点击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使用




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值