概述
手机桌面点击一个应用,用户希望应用能 及时响应、快速加载。虽然网上有很多讲解的各种操作的优化,但是作为开发,其实能操作的有限,主要还是集中在Application、首页Activity初始化过程中。
Application初始化优化
- 将非必要一开始启动的版块丢到需要调用的地方初始化
- 将能放到子线程进行加载的 通过线程池去初始化
- 将必须加载的能否延时到启动页进行初始化
- 针对多个需要开启子线程优化且有关联关系的 可以通过启动器进行处理
首页Activity初始化
- 通过懒加载方式开启单个tab
- 通过约束布局优化Activity布局 或者预布局处理
启动背景图
通过给Logo图的形式处理白屏问题
检测手段
StrictMode是Android提供的一个开发工具,用于检测一些异常的操作,以便开发者进行修复。StrictMode可以监控以下问题,
- 不应该在应用主线程中完成的工作,包括磁盘读写、网络访问等。
- 内存泄露,包括Activity泄露、SQLite泄露、未正确释放的对象等。
private void initStritMode() {
if (LoggerUtils.DEBUG) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectCustomSlowCalls()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectActivityLeaks()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.build());
}
}
总结
其实针对启动优化,具体到我项目中,使用的手段就上面这些。至于说 通过profile 或者Traceview去分析启动过程中方法的耗时 无外乎是看看具体是哪些方法耗时而已。AOP打点避免侵入性等等 我个人感觉也差不多如此。