你真的懂Android App的启动优化吗?

知其然知其所以然

凡是不知道的事情,查文档,肯定能查出个究竟
了解启动时,系统和应用程序发生了什么,以及他们在这些状态下做了什么

App 启动的三种状态

每一种状态都会影响你的App对用户可见的时间

冷启动(冷启动是App从零状态开始的状态,相对于其他的状态,我们应该更注重优化这状态下的启动)

什么是冷启动?

在系统关闭App前提下,设备首次启动

冷启动时,系统做了些什么?
  1. 加载和启动应用程序
  2. 在启动后,显示应用的空白启动窗口
  3. 创建app process
  4. app process 就开始做接下来的部分(见下图)
image

热启动(热启动和温启动,是系统把正在运行的App从后台带到前台的状态)

重新启动App,但是这个时候App的Activitys都还存在内存中

温启动

我根据官网的解释,重新进入App,重新调用onCreate()方法就是温启动,然后为什么会调用onCreate,可以认为App数据在内存中被清除了

这里可以先来分析下,根据官网提供的图,注意看,在这个单打独斗的日子,我们改不了系统的源码,我们只能做到我们开发中注意的点,<u>两个onCreate回调方法</u>,我们平时肯定是会用到的,不要在这做太多的耗时,影响DislayTime**

App启动流程分析

我在绍文大神的《Android开发高手课》专栏中看到,其实我们真正的业务不止这么简单,我们可能有闪屏页,广告页,然后到主页,这才是单单的页面展示,里面加载广告,热修复框架,插件话框架,等等

邵文大神课里的图

查看启动时间

那么你可以通过logcat中Displayed,来查看你应用到某个页面的时间

2019-07-26 14:36:40.016 1151-1188/? I/ActivityManager: Displayed com.txt.demo/DemoActivity: +847ms (total +2s405ms)

或者通过adb的命令行来查看

adb shell am start -S -W com.txt.demo/DemoActivity
Stopping: com.txt.demo
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.txt.demo/DemoActivity }
Status: ok
Activity: com.txt.demo/DemoActivity
ThisTime: 405
TotalTime: 908
WaitTime: 939
Complete

你还可以通过调用reportFullyDrawn()这是Activity的方法,可以来查看从启动到该页面的时间,根据你项目的需求,比如你有一系列懒加载,导致用户不能点击,那么你可以在懒加载完成之后,调用这个函数,告诉系统,然后可以查看。

image

2019-07-26 14:52:23.990 1151-1485/? I/ActivityManager: Fully drawn com.txt.homecredit/.ui.MainActivity: +1s380ms

当然好的工具也很重要,AS的CPU分析器工具真的至少要会一种,因为很多性能分析,找到思路或者是想找到问题,工具能帮助你如虎添翼,有空我分享下

可能出现的启动问题

1. 点击图标很久都不响应,或出现白屏(黑屏)
我们应用要是没有处理的话,都会出现这个问题,这个问题的解决,网上已经有很多方案,有方案说禁用预览窗口,但是官网说建议还是用设置theme的背景图片方法

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@mipmap/app_bg"
            android:gravity="fill"/>
    </item>
</layer-list>

2. 首页显示的太慢
现在业务多,启动流程越来越复杂,闪屏广告、热修复框架、插件话框架等等都需要在启动阶段完成,所以会导致部分性能不好的机型出现显示很慢的情况
3. 首页显示后无法操作
这个操作是基于首页显示的太慢做的优化,更多的工作在放在异步来处理,但是导致的弊端,页面展示后,有些数据没有出来,导致白屏,或者用户就无法操作页面。

启动优化

  • Application优化
    在上面冷启动的图,能看出在onCreate()尽量不做耗时工作
  • 闪屏优化
    闪屏优化,就是把预览窗口实现成闪屏的效果,可以用我上面说的这个方法来实现
  • 业务优化
    在启动过程中,我们要知道那些模块一定是要用到的,那些是可以在后面加载的
  • 细节优化
    1. 比如在广告页中,需要展示3秒的图片,在获取图片的时候,如果超过了三秒,就下次再展示(此时可以展示之前的图片或者不展示,展示logo之类),如果在3秒内,就展示这次的图片。
    2. 在上面说到的一定要加载的模块,可以再优化下,是不是可以通过算法,或者其他的方式实现,可优的点(这部分感觉要点能力,哈哈,我跟着绍文大神在学习中)
    3. 线程、GC等等比较让人头大的问题都可以优化

参考在开发的道路上,永远也不会被淘汰的是性能问题,感谢邵文大神

有问题找Google开发文档,准没错

启动优化,需要知道系统从启动到展示页面的逻辑,需要清楚了解我们的应用,业务在启动过程中做了什么,我们大部分能做的优化,就是在我们业务上面,通过更好的实现来优化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容