加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Android 框架问题分析案例 - 谁杀了桌面?

发布时间:2019-09-18 16:26:03 所属栏目:业界 来源:高爷
导读:写这篇文章的契机是由于一个实境碰着的题目 , 这个题目着实不难 , 不外在说明白这个题目然后写日志的时辰 , 我溘然认为这个题目说明的进程有须要记录一下 , 分享给各人。说明进程中有效到一些器材 , 一些要领 , 也从其它一个智慧的小搭档梅明哪里学到了一
副问题[/!--empirenews.page--]

写这篇文章的契机是由于一个实境碰着的题目 , 这个题目着实不难 , 不外在说明白这个题目然后写日志的时辰 , 我溘然认为这个题目说明的进程有须要记录一下 , 分享给各人。说明进程中有效到一些器材 , 一些要领 , 也从其它一个智慧的小搭档梅明哪里学到了一些说明能力和器材的行使能力 。

这篇文章中说明进程包罗我之前在 Android 中的卡顿丢帧缘故起因概述 - 要领论 内里提到的一些器材 , 包罗 : 复现视频 Event Log Android Studio 源码和 App Debug Android Studio Profile Systrace Dumpsys PS 等 . 大大都器材各人都在开拓进程中行使过 , 这次说明正是行使了这些器材彼此共同 , 最终找到的题目的缘故起因。

各人看下来也许会认为 , 这么简朴一个题目还必要写一篇文章 ? 我写这篇文章的目标一是为了记录给本身 , 二是认为说明进程较量有广泛性 , 包罗说明思绪和器材的行使 , 假如可以辅佐到各人 , 那么最好不外了 , 假如你也有好的思绪可能独家调试能力 , 接待各人扫描关于我 内里的接头群二维码插手群聊 , 配合前进!

征象

这个题目是测试直接报过来的 , Bug 描写是典范的按征象描写 : “ 从应用返回桌面 , 桌面图标加载慢 “. 测试这边提供了录制的视频和抓取的 Log , 以及对应的 Systrace 等. 既然征象和 Log 都在 , 那么就开始说明吧.

说明进程 确定题目产生的时刻点
  1. 因为测试提供的复现视频 , 起首看复现视频 , 确按时刻产生的时刻
  2. 按照视频内里的或许时刻(准确到分) , 查察对应的 EventLog ,跟视频比对,确定产生简直切时刻点 (准确到秒)
  3. 查察 EventLog 和 MainLog , 还原产生时辰的用户操纵 ,这个例子内里就发明启动和我信这个 App 之后,Launcher 被杀了
  1. EventLog 
  2. // 启动 com.jx.cmcc.ict.ibelieve 这个 App 
  3. 09-10 10:14:48.877  1456  2269 I am_set_resumed_activity: [0,com.jx.cmcc.ict.ibelieve/.ui.MainTabActivity,resumeTopActivityInnerLocked] 
  4. 09-10 10:14:48.886  1456  2269 I am_resume_activity: [0,80317506,54938,com.jx.cmcc.ict.ibelieve/.ui.MainTabActivity] 
  5. 09-10 10:14:48.891  1456  1485 I sysui_count: [window_time_0,0] 
  6. 09-10 10:14:48.891  1456  1485 I sysui_multi_action: [757,803,799,window_time_0,802,0] 
  7. 09-10 10:14:48.902  1456  2269 I am_uid_stopped: 10021 
  8.  
  9. // 这里桌面被杀 
  10. 09-10 10:14:48.903  1456  2269 I am_kill : [0,13509,com.meizu.flyme.launcher,600,kill background] 
  11.  
  12. // 这里开始从 App 返回桌面 
  13. 09-10 10:14:51.990  1456  1791 I am_pause_activity: [0,80317506,com.jx.cmcc.ict.ibelieve/.ui.MainTabActivity] 
  14. 09-10 10:14:51.994  1456  1791 I am_task_to_front: [0,54923] 
  15. 09-10 10:14:51.996 13674 13674 I am_on_paused_called: [0,com.jx.cmcc.ict.ibelieve.ui.MainTabActivity,handlePauseActivity] 
  16. 09-10 10:14:52.013  1456  2270 I am_uid_running: 10021 
  17.  
  18. // 从头建设桌面历程 
  19. 09-10 10:14:52.025  1456  2270 I am_proc_start: [0,14013,10021,com.meizu.flyme.launcher,activity,com.meizu.flyme.launcher/.Launcher] 
  20. 09-10 10:14:52.045  1456  2270 I am_proc_bound: [0,14013,com.meizu.flyme.launcher] 
  21. 09-10 10:14:52.069  1456  2270 I am_uid_active: 10021 
  22. 09-10 10:14:52.069  1456  2270 I am_restart_activity: [0,238217861,54923,com.meizu.flyme.launcher/.Launcher] 
  23.  
  24. // 桌面表现 
  25. 09-10 10:14:52.071  1456  2270 I am_set_resumed_activity: [0,com.meizu.flyme.launcher/.Launcher,minimalResumeActivityLocked] 
  26. 09-10 10:14:52.335 14013 14013 I am_on_resume_called: [0,com.meizu.flyme.launcher.Launcher,LAUNCH_ACTIVITY] 
  27. 09-10 10:14:52.437  1456  1504 I am_activity_launch_time: [0,238217861,com.meizu.flyme.launcher/.Launcher,413,413] 

那么这里就可以简朴还原题目了 , 测试报的是 从应用返回桌面 , 桌面图标加载慢 , 从 Event Log 来看 , 桌面表现慢 , 是由于 桌面被杀了 , 以是从 App 返回的时辰 , 桌面必要从头加载 , 从桌面历程建设到桌面完全表现 , 耗费了 413ms(现实到桌面完全表现,耗费了至少 2s 阁下,由于 Launcher 冷启动还要从头加载内容).

说明被杀缘故起因

从上面的说明来看 , 我们必要找到 Launcher 被杀的缘故起因 , 从征象上来看 , 好像是和 com.jx.cmcc.ict.ibelieve 这个历程有相关 , 可是我们今朝是没有步伐确认的 .

这里我们重点看这个这个 Event Log

  1. am_kill : [0,13509,com.meizu.flyme.launcher,600,kill background] 

这里可以看到 Launcher 被杀的缘故起因是 kill background , 查察对应的源码可知,reason = kill background 是 AMS.killBackgroundProcesses 这里发出的.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读