【问题标题】:Handle force close?处理力关闭?
【发布时间】:2017-07-25 21:04:59
【问题描述】:

有没有办法在强制关闭请求被杀死之前通知活动/服务?

我的意思是当用户点击Menu > Settings > Applications > Manage applications > app name > Force Close 中的强制关闭按钮时。

【问题讨论】:

    标签: android kill taskkill


    【解决方案1】:

    认为 ActivityManager 只是终止了托管进程,因此您可能无法获得任何事件/消息/警告。要检查,您可以创建一个具有单个 Activity 的应用程序,让您知道是否调用了 onDestroy,以及是否调用了 isFinishing

    如果有帮助,源中Menu > Settings > Applications > Manage applications > app name > Force Close 的路径是:

    管理应用程序:
    https://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/ManageApplications.java

    已安装应用详情:
    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

    一旦它获得了原生级别,它就会交给一个服务来做脏活。再一次,我猜它只是停止了这个过程,但这是一个猜测,我不知道原生接口的另一端在源代码中的位置(尽管如果你戳它,它就在某个地方)周围并想确定)。

    此外,您可能希望在问题中添加为什么您想要此信息,根据具体情况,可能会有不同/更好的角度来实现您想要完成的目标。

    【讨论】:

    • 非常感谢您提供如此大量的信息!我想做的是在“app A”被强制关闭后启动一个“app B”,你认为这可以在android中实现吗? :S
    • @Shatazone:我真诚地希望你想要的东西是不可能的。恶意软件会立即使用该技术。
    • 我猜您可能只想记录强制关闭,以获取反馈等。在启动另一个应用程序方面,我同意 CommonsWare 的观点,这绝对不是一个好主意。如果用户强制关闭您的应用,他们希望将其关闭,并且不希望该操作导致另一个应用启动。
    • hmmm ...是的,如果可以处理,它可能会被用作安全漏洞...
    【解决方案2】:

    我对这里和一般的 Android 编程还是很陌生,如果这不是完全正确的,请原谅我。但是,我的理解是,仅当您的应用程序 a) 无响应或 b) 引发未捕获的异常时,才会显示 Application Not Responding (ANR) 对话框。

    如果 a) 应用程序将无法在合理的时间内响应任何强制关闭通知,因为它已经挂断到足以生成 ANR。如果 b) 你的应用程序已经死了。

    【讨论】:

    • 感谢 commie64,但我的意思不是这样......就像任务管理器可以杀死 windows 中正在运行的进程一样,您也可以杀死 android 中正在运行的应用程序,而不管它们的实际运行状态如何(冻结或跑步)
    • 对不起,在我兴致勃勃地回答时,我误解了你的问题。我不确定这里的礼仪是什么,我应该删除我的答案吗?另外,我猜你所指的这种方法基本上模拟了 ANR 正在做什么。由于 ANR 无法通知冻结/崩溃的应用程序,因此我认为它不会在将其关闭之前调用任何清理方法。所以我猜这个方法也没有。不过,这只是猜测,抱歉。
    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2015-02-12
    • 2021-10-10
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多