【发布时间】:2017-07-25 21:04:59
【问题描述】:
有没有办法在强制关闭请求被杀死之前通知活动/服务?
我的意思是当用户点击Menu > Settings > Applications > Manage applications > app name > Force Close 中的强制关闭按钮时。
【问题讨论】:
有没有办法在强制关闭请求被杀死之前通知活动/服务?
我的意思是当用户点击Menu > Settings > Applications > Manage applications > app name > Force Close 中的强制关闭按钮时。
【问题讨论】:
我认为 ActivityManager 只是终止了托管进程,因此您可能无法获得任何事件/消息/警告。要检查,您可以创建一个具有单个 Activity 的应用程序,让您知道是否调用了 onDestroy,以及是否调用了 isFinishing。
如果有帮助,源中Menu > Settings > Applications > Manage applications > app name > Force Close 的路径是:
ActivityManager.forceStopPackage:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/app/ActivityManager.java
ActivityManagerNative.forceStopPackage:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/app/ActivityManagerNative.java
一旦它获得了原生级别,它就会交给一个服务来做脏活。再一次,我猜它只是停止了这个过程,但这是一个猜测,我不知道原生接口的另一端在源代码中的位置(尽管如果你戳它,它就在某个地方)周围并想确定)。
此外,您可能希望在问题中添加为什么您想要此信息,根据具体情况,可能会有不同/更好的角度来实现您想要完成的目标。
【讨论】:
我对这里和一般的 Android 编程还是很陌生,如果这不是完全正确的,请原谅我。但是,我的理解是,仅当您的应用程序 a) 无响应或 b) 引发未捕获的异常时,才会显示 Application Not Responding (ANR) 对话框。
如果 a) 应用程序将无法在合理的时间内响应任何强制关闭通知,因为它已经挂断到足以生成 ANR。如果 b) 你的应用程序已经死了。
【讨论】: