设为首页 - 加入收藏 通辽站长网 (http://www.0475zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 芯片 3 一直 2
当前位置: 首页 > 11选5任八倍投计划 > 评论 > 正文

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

发布时间:2019-09-21 01:41 所属栏目:[评论] 来源:高爷
导读:写这篇文章的契机是因为一个实际遇到的问题 , 这个问题其实不难 , 不过在分析了这个问题然后写日记的时候 , 我突然觉得这个问题分析的过程有必要记录一下 , 分享给大家。分析过程中有用到一些工具 , 一些方法 , 也从另外一个聪明的小伙伴梅明那里学到了一

写这篇文章的契机是因为一个实际遇到的问题 , 这个问题其实不难 , 不过在分析了这个问题然后写日记的时候 , 我突然觉得这个问题分析的过程有必要记录一下 , 分享给大家。分析过程中有用到一些工具 , 一些方法 , 也从另外一个聪明的小伙伴梅明那里学到了一些分析技巧和工具的使用技巧 。

11选5任八倍投计划这篇文章中分析过程包括我之前在?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 这里发出的.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章