继续学习Android,我读了以下内容:
Question: Does the user have a choice to kill the application
unless we put a menu option in to kill it? If no such option exists,
how does the user terminate the application?
Answer: (Romain Guy): The user doesn't, the system handles this automatically. That's what the activity lifecycle (especially onPause/onStop/onDestroy) is for. No matter what you do, do not put a "quit" or "exit" application button. It is useless with Android's application model. This is also contrary to how core applications work.
呵呵,我在Android世界里每走一步都会遇到一些问题=(
显然,你不能在Android中退出应用程序(但Android系统可以随时完全销毁你的应用程序)。这是怎么回事?我开始认为这是不可能写一个应用程序的功能作为“正常的应用程序”-用户可以退出应用程序时,他/她决定这么做。这不应该依靠操作系统来完成。
我正在尝试创建的应用程序不是Android市场的应用程序。它不是一个被大众“广泛使用”的应用程序,它是一个将在非常狭窄的商业领域使用的商业应用程序。
我其实很期待为Android平台开发,因为它解决了Windows Mobile和。net中存在的许多问题。然而,上周对我来说有点令人失望……我希望我不必放弃Android,但它现在看起来不太好=(
有办法让我真的退出应用程序吗?
在Intent中使用FLAG_ACTIVITY_CLEAR_TOP标志关闭应用程序,然后system.exit();
或者有类似的方法,但是没有system.exit()当你想退出时调用这个方法:
public void exit() {
startActivity(new Intent(this, HomeActivity.class).
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK).putExtra(EXIT_FLAG, true));
}
在你的HomeActivity.onCreate()中添加以下代码
protected void onCreate(Bundle savedInstanceState) {
if (getIntent().getBooleanExtra(EXIT_FLAG, false)) {
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
finish();
}
}
......................
这将在不破坏Android生命周期的情况下工作。
对于应用程序的第一个(启动)活动,
@Override
public void onBackPressed(){
// Exit
moveTaskToBack(true);
}
为我工作。我想在这里关闭应用程序。从其他活动中回来;我用了意图,例如:
@Override
public void onBackPressed(){
// Going back....
Intent intent = new Intent(ActivityB.this, ActivityA.class);
startActivity(intent);
finish();
}
注意:这段代码适用于开发人员想要从ActivityZ返回ActivityA然后关闭应用程序的场景。