App优化总结
Posted lxn_李小牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了App优化总结相关的知识,希望对你有一定的参考价值。
一.启动优化
启动加速方向
- 利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验;
- 避免在启动时做密集沉重的初始化(Heavy app initialization);
- 定位问题:避免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,某些情况下,需要阻止设备休眠)
及时释放锁,
三.网络优化
- 避免DSN解析,直接访问IP地址
- 合并网络请求(DNS查找,三次握手,HTTPS还需要TLS握手)
- 预先获取数据
- 避免轮询
- 优化重连机制
- 离线缓存
- 压缩数据大小
- 不同网络环境使用不同的超时策略
- CDN使用
以上是关于App优化总结的主要内容,如果未能解决你的问题,请参考以下文章