gpt4 book ai didi

android - 为什么我的进程在应用程序崩溃后仍然存在?

转载 作者:行者123 更新时间:2023-11-30 00:05:54 24 4
gpt4 key购买 nike

我有一个应用程序,我通过故意抛出 RuntimeException 在某个点崩溃.结果是应用程序崩溃,所有可见的 Activity 痕迹消失,并向用户显示一个弹出对话框:

App has stopped
[X] Close app

到目前为止一切顺利,所有这些都是意料之中的。

但是,我可以通过调用 adb shell ps | grep <packageName> 来观察在崩溃之前和之后,我的进程实际上幸存这次崩溃。 (该进程仅在用户点击“关闭应用”后终止。)

  • 这个过程保持活力有什么意义?这个过程处于什么状态?它需要哪些资源,哪些信息仍保留在内存中?

附言。我知道在进程不存在的情况下强制终止应用程序的不同可能性(例如 System.exit()android.os.Process.killProcess() )但这不是问题 - 我真的更感兴趣为什么进程在应用程序崩溃后仍然存在。


我的问题的背景应用程序强化和根/篡改/调试器检测。在某些情况下,从安全/强化的角度来看(即让潜在攻击者更难进行逆向工程),可能需要尽可能快速、干净地终止应用程序。我完全知道 Android 的设计目的不是为应用程序提供这种控制,而且您通常不应该尝试终止应用程序。

最佳答案

Android 在崩溃后让进程保持 Activity 状态一段时间的原因与您的目标正好相反 :) 它需要收集一些调试信息并将其提供给应用程序创建者。

您可以直接从代码中终止您的进程:

android.os.Process.killProcess(android.os.Process.myPid());

关于android - 为什么我的进程在应用程序崩溃后仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com