当我点击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)时,它会异常停止,看起来完全完成,并且“强制停止”按钮看起来已禁用。
答案 0 :(得分:36)
另一种方式是
android.os.Process.killProcess(android.os.Process.myPid());
如果您将这些电话放在onDestroy()
中,我认为这样做并不是那么糟糕。 (如果你在事件处理过程中杀死了你的进程,那么各种不好的事情 - 比如触摸焦点会进入以太 - 就会发生。)
然而,你需要一个令人信服的理由偏离最佳实践,即只需要调用finish()
并让操作系统在需要的时候处理你的进程。
答案 1 :(得分:13)
注意:这不会杀死整个应用,但如果你想要做的就是完成所有的应用活动,这是最好的选择。
finishAffinity();
ActivityCompat.finishAffinity(Activity activity)
希望这有帮助
答案 2 :(得分:2)
杀死应用程序的一个坏方法是System.exit(0)
编辑: 我相信我有一些解释。 Android自己处理应用程序生命周期,你不应该'ForceClose'它,我不知道有什么好办法。一般来说,如果您的应用程序在后台仍处于活动状态,则可以正常运行,这样如果用户再次启动它,它将很快弹出。
答案 3 :(得分:0)
为什么不对ActivityManager进行Shell调用?
try {
Runtime.getRuntime().exec("am force-stop com.me.myapp");
} catch (IOException e) {
e.printStackTrace();
}
答案 4 :(得分:0)
我知道这是一个较晚的答复,希望对您有所帮助。
您可以在代码段中尝试使用finishAndRemoveTasks();
代替finish();
。
这将杀死您应用程序的所有活动和所有过程,甚至从任务管理器中删除最新应用程序。
注意:如果您在代码中使用了任何类型的handler
或thread
,请确保删除其功能,然后使用上面建议的代码(如果不是NullPointer Exception
或{{ 1}}。
答案 5 :(得分:0)
简短
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);