如何完成一个Android应用程序?

我需要完成一个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次退出此应用程序…我怎么能完成所有的活动一个应用程序,当我需要退出…或有什么办法来完成整个应用程序

每当你开始一个新的活动使用

 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> 

要closures应用程序只需调用:

 android.os.Process.killProcess(android.os.Process.myPid()); 

否则,由于Android活动的具体生命周期,你不能确定该应用程序是closures/杀死。

请首先阅读Google Android Developer Advocate的这篇文章Reto Meier: 何时在Android应用程序中包含退出button(提示:从不)

什么是使你想添加一个退出button的症状? 如果您需要清除活动堆栈并始终使用特定的活动重新启动,则可能只需使用如下属性来调整活动清单声明: android:clearTaskOnLaunch

把它放到你的onClickonBackPressed

 moveTaskToBack(true); finish() 

Android是这样一种方式,几乎没有曾经打开的应用程序被closures。

在解释陈述之前,明白这一点。

“每当你退出你的应用程序,Android保存所有的应用程序正在做的事情(称为状态),并在后台推送应用程序,调用onStop()方法,这是应用程序的新状态,那么应用程序是不是不会运行,但不会从内存中被刷新,只要你再次启动应用程序,它就会从冻结状态恢复,只有在保存冻结应用程序的内存开始变满时,Android GC才会刷新应用“。

所以从概念上讲,什么都不是。 当你在第一个活动的时候你点击“返回”button,Android捆绑应用程序和数据,并冻结它。

我有一个应用程序与几个活动。 我扩展了我的Application类,并包含一个variablesnumActive。 这被初始化为0.在每个activity的onStart()中,numActive递增,在onStop()中递减。 如果计数达到零,用户完全离开了我的应用程序,我closures了我的后台任务。

NeTeInStEiN的答案无耻副本,因为我发现它是如此有用(请最后他的答案): 发送一个正在运行的应用程序后台编程

您可以使用:

 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)总是返回false

要closures应用程序,您还可以采取“System.exit(0)”0是标准的或使用任何退出代码。