【问题标题】:Android force Stop callback to application?Android强制停止回调到应用程序?
【发布时间】:2014-12-09 12:26:59
【问题描述】:

如果按照 Settings->Application->ManageApplications -> --> Force Stop 的步骤强制停止应用程序,android 是否调用 Activity 或 Application 的 onDestroy ? (如果没有,有什么方法可以知道应用程序是否由于用户触发的强制停止而死亡)。

【问题讨论】:

  • 但是应用程序保护呢?他们是否使用安全漏洞成为root?因为如果你强制停止应用程序,它会重新启动,无论你如何杀死它,它都会重新启动。

标签: java android


【解决方案1】:

强制停止应用程序将终止整个进程(即使用Process.killProcess(int pid))。与应用程序相关的所有资源都将被内核删除和释放。所以不,您无法拦截此操作。

当您在市场上发布您的应用程序时,开发者控制台将为您提供有关强制关闭、崩溃等的统计信息(如果这就是您询问的原因)。

【讨论】:

    【解决方案2】:

    简而言之,不,onDestroy() 没有被调用,你不能这样做。安卓不支持。

    一个更广泛的答案...

    onDestroy() 在这种情况下似乎没有被调用。在调用 super.onDestroy 之前,我尝试使用 Toast me 对此进行了测试,但 Toast 消息从未出现过。 (根据this postonDestroy() 确实不可靠,不会经常在电话上调用,如果有的话,它可能会在模拟器上调用 - 所以要注意这一点)。而是调用了killProcess(),我们无法拦截它。

    此外,根据this post 中接受的答案,在用户控制的强制停止后,我们似乎甚至无法捕获和执行任务。

    【讨论】:

    • 在大多数情况下,不能保证会调用onDestroy()
    • 对不起,我并不是说你错了......只是想概括一下答案(“在大多数情况下”)。希望你不要介意。 :)
    • 一点也不!没必要道歉。换一种说法,你最好重新陈述它,这样它就更容易理解了,同时也表明了用户应该依赖 onDestroy()这一事实的重要性。
    【解决方案3】:

    没有。这真的不可能。我没有查看有问题的 Android 代码,但我想“强制停止”只是在您的应用程序的进程 ID 上调用 kill。因此,您可以拦截的唯一方法是捕获信号,我认为 Android 不允许这样做。

    如果你是 root,你可以这样做,但不是以任何标准方式。

    【讨论】:

    • 在我看来,处理信号的能力将是一个相当大的安全漏洞。 :P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多