2012-06-22 91 views
3

如果按照設置 - >應用程序 - >管理應用程序 - > - >強制停止的步驟強制停止應用程序,那麼android是否會調用Activity或Application的onDestroy? (如果沒有,是否有任何方法知道應用程序是否因用戶觸發的強制停止而死亡)。Android強制停止回撥應用程序?

+0

但是應用程序應用程序保護呢?他們是否使用安全漏洞成爲root?因爲如果你強制停止應用程序,它會再次啓動,不管你如何殺死它,它都會重新開始。 – David

回答

8

強行停止該應用將殺死的全過程(與Process.killProcess(int pid)即)。與應用程序相關的所有資源都將被內核刪除並釋放。所以不,沒有辦法阻止這種行爲。

當您在市場上發佈應用程序時,開發人員控制檯將爲您提供有關強制關閉,崩潰等的統計信息(如果這就是您要求的原因)。

+0

謝謝您的回覆。 – Chris

3

總之,沒有,onDestroy()不叫,你不能做到這一點。 Android不支持它。

更加延長的答案...

onDestroy()不會出現在這種情況下被調用。我在調用super.onDestroy之前嘗試使用Toast來測試這個,但Toast消息從未出現過。 (根據this postonDestroy()真的不可靠,不會經常被調用,如果有的話,在手機上,而它可能會在模擬器上調用 - 所以要注意這一點)。相反,killProcess()被調用,我們不能攔截。

此外,根據this post接受的答案,看來我們甚至不能趕上和用戶控制的力停止後執行任務。

+0

在大多數情況下,不保證會調用'onDestroy()'。 –

+0

正是。這已經在我的回答中說明了。 – Mxyk

+0

對不起,我不是在暗示你錯了......只是想概括一下答案(「在大多數情況下」)。希望你不介意。 :) –

0

號這是不是真的有可能。我沒有看到有問題的Android代碼,但我會想象「強制停止」只是在您的應用的進程ID上調用kill。所以你可以攔截的唯一方法就是如果你可以捕獲信號,我認爲Android不允許。

如果你根植,你可能做到這一點,但不是在任何標準的方式。

+0

在我看來,處理信號的能力將是一個相當大的安全缺陷。 :P –

相關問題