Android - 以编程方式退出或终止应用程序的完美解决方案?

时间:2015-01-07 20:29:08

标签: android kill terminate quit

如果我的应用遇到特定错误,我想结束我的应用,而不会留下系统中的任何痕迹。我已经看过很多关于这个话题的主题,特别是这两个主题。

Is quitting an application frowned upon?

How to quit android application programmatically

答案很好,但建议的解决方案太繁琐和/或不必要的复杂。

1 个答案:

答案 0 :(得分:-1)

从上面第一篇文章中的Neil Traft的答案中得到启示,我找到了一个完美的解决方案。

System.exit(0)或android.os.Process.killProcess(android.os.Process.myPid())如果你在应用程序的backstack中只有一个Activity,那么它们似乎都可以工作,否则Android会重新启动你的app推送(前 - 1)活动到前台,可能是因为Android假定用户正在与应用程序进行交互而且它突然“崩溃”,所以他应该继续与它进行交互。

所以,我的解决方案是首先使用Activity.moveTaskToBack()将应用程序发送到后台,然后调用上述两种方法中的任何一种。

private void terminateApp() {       

    // TODO: Don't forget to clean up your background threads, services, etc. 

    // send the app into background, otherwise Android will relaunch the app process if you have multiple Activities in your backstack.
    moveTaskToBack(true);

    // kill everything running in this process.
    System.exit(-1); // or you can use android.os.Process.killProcess(android.os.Process.myPid());
}

我认为这种方法没有任何问题,只是它违反了Android的设计原则......虽然当你真的非常需要它时,这种方法很有效。

希望这有助于某人!