我需要完成一个Android应用程序。为此我写了
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure You want to exit")
.setCancelable(false)
.setPositiveButton("YES"),
new DialogInterface.OnClickListener() {
// On
// clicking
// "Yes"
// button
public void onClick(DialogInterface dialog,int id) {
System.out.println(" onClick ");
closeApplication(); // Close Application method called
}
})
.setNegativeButton("NO"),
new DialogInterface.OnClickListener() {
// On
// clicking
// "No"
// button
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void closeApplication() {
System.out.println("closeApplication ");
this.finish();
}
}
但是如果在应用程序中没有完成任何活动,当我试图退出应用程序时,活动先完成并且应用程序没有退出..我尝试了2次退出此应用程序...我怎么能完成所有当我需要退出时,应用程序中的活动......或者是否有任何方法可以完成整个应用程序
答案 0 :(得分:46)
要关闭应用程序,只需致电:
android.os.Process.killProcess(android.os.Process.myPid());
否则,由于Android活动的特定生命周期,您无法确定应用程序是否已关闭/被杀死。
答案 1 :(得分:26)
无论何时开始新活动,都要使用
myintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myintent);
并在清单文件中将该活动提及为
<activity android:name=".<Activity Name>" >
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 2 :(得分:16)
将其放入onClick
或onBackPressed
:
moveTaskToBack(true);
finish()
答案 3 :(得分:11)
请先阅读Google Android Developer Advocate Reto Meier的这篇帖子: When to Include an Exit Button in Android Apps (Hint: Never)
您想要添加退出按钮的症状是什么?如果您需要清除活动堆栈并始终使用特定活动重新启动,则可能只需使用以下属性调整活动清单声明:android:clearTaskOnLaunch
答案 4 :(得分:9)
Android是以这样的方式制作的,几乎没有曾经打开的应用程序被关闭。
在错误解释声明之前,请理解这一点。
“每当您退出应用程序时,Android都会保存应用程序正在执行的所有操作(称为其状态)并在后台推送应用程序,调用onStop()方法。这是应用程序的新状态,其中应用程序没有运行,但也没有从内存中刷新。每当你再次启动应用程序时,它就会从冻结状态恢复。只有当保留冻结应用程序的内存开始变满时,Android才会启动GC刷新应用程序。“
从概念上讲,没有任何结果。当您在第一个活动中点击“返回”按钮时,Android会捆绑应用和数据,并将其冻结。
答案 5 :(得分:1)
我有一个包含多个活动的应用程序。我扩展了我的Application类,并包含一个变量numActive。这被初始化为0.在每个活动的onStart()中,numActive递增,而在onStop()中递减。如果计数达到零,则用户完全离开了我的应用程序,并关闭了后台任务。
答案 6 :(得分:1)
NeTeInStEiN答案的无耻副本,因为我发现它非常有用(请投票给他答案):Sending a running application to background programmatically
您可以使用:
boolean sentAppToBackground = moveTaskToBack(true);
if(!sentAppToBackground){
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
}
此处提供更多信息:http://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)
或者简单地说:
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
根据Android框架工程师Romain Guy的说法,“你无法模拟Home键上的按键。”所以要小心......
检查:http://osdir.com/ml/Android-Developers/2010-03/msg01887.html
根据以下内容更新了此答案:moveTaskToBack(true) returns false always
答案 7 :(得分:0)
根据this answer,
只需编写this.finishAffinity();
并完成!
答案 8 :(得分:-2)
要关闭应用程序,您还可以将“System.exit(0)”0作为标准或使用任何退出代码。