有没有办法在强制关闭请求被杀死之前通知活动/服务?
我的意思是当用户点击强制关闭按钮时Menu > Settings > Applications > Manage applications > app name > Force Close
。
我认为ActivityManager 只是杀死了托管进程,因此您可能无法获得任何事件/消息/警告。要检查,您可以创建一个具有单个Activity的应用程序,让您知道是否调用了onDestroy,以及是否调用了isFinishing。
Menu > Settings > Applications > Manage applications > app name > Force Close
如果有帮助,源中的路径是:
ManageApplications:
https ://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/ManageApplications.java
InstalledAppDetails:
https ://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/InstalledAppDetails.java
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) 你的应用程序已经死了。