如果我的应用遇到特定错误,我想结束我的应用,而不会留下系统中的任何痕迹。我已经看过很多关于这个话题的主题,特别是这两个主题。
Is quitting an application frowned upon?
How to quit android application programmatically
答案很好,但建议的解决方案太繁琐和/或不必要的复杂。
答案 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的设计原则......虽然当你真的非常需要它时,这种方法很有效。
希望这有助于某人!