28

当我单击 closeButton 时,我想强制停止我的 Android 应用程序。这是我的代码。

protected void onCreate(Bundle savedInstanceState) {

  this.setContentView(R.layout.layoutxml);

  this.closeButton = (Button)this.findViewById(R.id.close);

  this.closeButton.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

      finish();

    }

  });

}

这完成了我的申请。如果我转到Settings -> Applications -> Manage applications -> <my application name>,我可以看到“强制停止”按钮已启用。这是否意味着我的申请没有完全停止?

如何完全完成我的 Android 应用程序并禁用“设置”中的“强制停止”按钮?根据我有限的经验,当应用程序中发生“异常”(例如 NullPointerException)时,它会异常停止,看起来像是完全完成,并且“强制停止”按钮看起来已禁用。

4

7 回答 7

48

另一种方法是

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

我认为这样做并没有那么糟糕,只要你把这些电话放在onDestroy(). (如果您在事件处理过程中终止进程,则可能会发生各种不好的事情——比如触摸焦点进入以太。)

然而,您需要一个令人信服的理由来偏离最佳实践,即只需调用finish()并让操作系统在需要时/如果需要时负责终止您的进程。

于 2011-02-24T05:39:40.517 回答
13

注意:这不会杀死整个应用程序,但如果您想要完成所有应用程序活动,这是最好的选择。

安卓≥16

finishAffinity();

安卓 < 16

ActivityCompat.finishAffinity(Activity activity)

希望这可以帮助

于 2015-12-17T16:54:55.987 回答
8

杀死应用程序的一个坏方法是System.exit(0)

编辑:我相信我欠一些解释。Android 自行处理应用程序生命周期,您不应该“强制关闭”它,而且我不知道有什么好的方法。通常,如果您的应用程序在后台仍然存在,则可以,这样如果用户再次启动它,它将快速弹出。

于 2011-02-24T05:29:36.430 回答
0

简短而简单

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
于 2020-07-22T11:08:40.343 回答
0

我知道这是一个迟到的回复,希望这对某人有所帮助。

您可以尝试finishAndRemoveTasks();而不是finish();在您的代码段中。

这将杀死您的应用程序的所有活动和所有进程,甚至从任务管理器中删除最近的应用程序。

注意:如果您在代码中使用了任何类型的handlerthread,请确保删除其功能,然后使用上面建议的代码,如果没有NullPointer ExceptionResourceNotFound Exception会发生。

于 2019-05-09T09:13:56.813 回答
-1

下面的链接有解决方案。它对我有用。

finishAffinity()

如何以编程方式强制停止我的 android 应用程序?

于 2021-09-02T14:27:39.793 回答
-1

为什么不对 ActivityManager 进行 Shell-Call?

try {
      Runtime.getRuntime().exec("am force-stop com.me.myapp");
    } catch (IOException e) {
      e.printStackTrace();
    }
于 2017-02-01T11:49:13.660 回答