性能优化-启动优化

75 阅读2分钟

概述

手机桌面点击一个应用,用户希望应用能 及时响应、快速加载。虽然网上有很多讲解的各种操作的优化,但是作为开发,其实能操作的有限,主要还是集中在Application、首页Activity初始化过程中。

Application初始化优化

  1. 将非必要一开始启动的版块丢到需要调用的地方初始化
  2. 将能放到子线程进行加载的 通过线程池去初始化
  3. 将必须加载的能否延时到启动页进行初始化
  4. 针对多个需要开启子线程优化且有关联关系的 可以通过启动器进行处理

首页Activity初始化

  1. 通过懒加载方式开启单个tab
  2. 通过约束布局优化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打点避免侵入性等等 我个人感觉也差不多如此。

参考文章

启动优化1
启动优化2