App 启动优化 之 背景知识

启动类型

冷启动

click event -> IPC -> Process.start -> ActivityThread -> bindApplication -> LifeCycle -> ViewRootImpl

热启动

后台 -> 前台

温启动

Lifecycle

启动相关任务

  1. 启动App
  2. 加载空白window
  3. 创建进程
  4. 创建Application
  5. 启动主线程
  6. 创建MainActivity
  7. 加载布局
  8. 布置屏幕
  9. 首帧绘制

优化方向

Application和Activity生命周期

启动时间的测量

方式1:adb命令(适合本地使用)

adb shell am start -W packagename/首屏Activity(含有包名)
JamesdeMBP:~ zhanxuzhao$ adb shell am start -W com.example.demo_0227/com.example.demo_0227.SplashActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.demo_0227/.SplashActivity }
Status: ok
Activity: com.example.demo_0227/.MainActivity
ThisTime: 123
TotalTime: 285
WaitTime: 304
Complete

ThisTime:最后一个Activity启动耗时(如MainActivity,不会包含前面的SplashActivity)

TotalTime:所有Activity启动耗时

WaitTime:AMS启动Activity总耗时

ThisTime < TotalTime < WaitTime

方式二:手动打点(可以线上统计)

开始点:

Application#attachBaseContext()

结束点:

方案一:首帧开始绘制(不推荐)

onWindowFocusChanged

方案二:真实数据展示(第一条feed加载:onBindViewHolder)

onBindViewHolder
holder.linearLayout.getViewTreeOvserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
    @Override
    public boolean onPregraw(){
    LaunchTimer.endRecord();
    holder.linearLayout.getViewTreeObserver().removeOnPredrwaListener(this);
    return true;}
}

性能检测工具

traceview

Debug.startMethodTracing("fileName"); // 方法开始
Debug.stopMethodTracing(); // 方法结束

生成文件路径:sdcard/android/data/packagename/files

image

特点:
可以统计方法调用关系、耗费时间。

缺点:
运行时开销严重,整体都会变慢。

systrace

结合 Android 内核数据, 生成 html 报告

TraceCompat.beginSection("section name");
TraceCompat.endSection();

特点
轻量级,开销小。
直观反映CPU利用率。

优雅获取方法耗时

AOP(Aspect Oriented Programming)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 序言 三种启动状态及启动过程冷启动温启动热启动 统计应用启动时间查看logcat日志adb shell am st...
    人海中一只羊阅读 6,099评论 0 6
  • 【触发背景】面对海量APP的今天,APP用户量和活跃度成为评价一款APP是否成功的重要因素。用户下载APP后,AP...
    siyu8023阅读 10,371评论 1 14
  • 转载自一触即发 App启动优化最佳实践 一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南...
    CP9阅读 618评论 0 3
  • 前言 关于冷启动的优化方法,网上已经有很多的文章了,总结起来,大概有以下几种优化方式: 优化布局,这一步是最简单的...
    事多店阅读 5,051评论 1 11
  • 一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优...
    eclipse_xu阅读 5,141评论 7 95