Android 框架题目说明案例 - 谁杀了桌面?
ActivityManagerService.killBackgroundProcesses
对源码较量认识的同窗可以很快知道 , AMS.killBackgroundProcesses 这个接口会提供应三方应用去挪用 , 其 Binder 的客户端在 ActivityManager.killBackgroundProcesses 这里 ActivityManager.killBackgroundProcesses 对 SystemServer 历程举办断点 Debug 知道了上面的代码逻辑 , 我们必要做的就是找到在这个场景下 , 是哪个应用挪用 ActivityManager.killBackgroundProcesses 杀掉了桌面. 因为不知道详细是哪个应用(这里固然我们猜疑是 com.jx.cmcc.ict.ibelieve , 可是没有证据) , 我们先对 SystemServer 历程举办 Debug . 1.起首对源码举办 debug , 起首在 Android 中点击 debug 按钮 , 选择 system_process 这个历程(就是我们所说的 SystemServer) , 然后点击 OK . 代码的断点我们打在上面列出的 ActivityManagerService.killBackgroundProcesses 要领内里。 2.点击启动猜疑的 App ( 可以从 EventLog 和视频内里倒推,找到较量可疑的 App , 安装后举办当地测试复现 , 这里选择了视频中呈现的几个应用,包罗我们之前猜疑的 com.jx.cmcc.ict.ibelieve- 和我信 ) , 点击其他的应用都不会进入到这个断点, 而在点击 和我信 这个 App 启动后走到的断点。 3.这里我们可以看到挪用栈是一个 Binder 挪用 , 我们必要找到这个 Binder 挪用的客户端. 在 AS 内里继承操纵 , 点击如下图的计较器按钮 , 输入 getRealCallingPid() 点击下面的 Evaluate , 就可以看到功效. result = 29771 4.通过 PS 呼吁 , 查察这个 pid 对应的 app。 可以看到就是这个应用挪用的 killBackgroundProcesses。 对 App 历程举办断点 Debug(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |