App优化总结

Posted lxn_李小牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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使用




以上是关于App优化总结的主要内容,如果未能解决你的问题,请参考以下文章

App优化总结

App优化总结

面试系列——App启动性能优化总结

面试系列——App启动性能优化总结

Android APP性能优化(最新总结)

Android app的启动优化总结