如何完成Android应用程序?

时间:2011-01-19 05:55:53

标签: 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次退出此应用程序...我怎么能完成所有当我需要退出时,应用程序中的活动......或者是否有任何方法可以完成整个应用程序

9 个答案:

答案 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)

将其放入onClickonBackPressed

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作为标准或使用任何退出代码。