我一直在寻找有关如何关闭android应用程序的解决方案。
收集了有关该主题的所有帖子,我最终建立了一个健康有效的解决方案,我想在此帖子中分享
如果我在某个地方失败了,请纠正我。
public static void closeApp(Activity activity) {
//Go to home to change main android view and focus
//You can remove this part
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
//finish in background many activities as possible
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.finishAndRemoveTask();
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
activity.finishAffinity();
} else {
activity.finish();
}
//Kill all existing app process
activity.moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
//close the app
System.exit(0);
}
使用例子
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeApp(MainActivity.this);
}
});
}
在释放资源和完全关闭应用程序时,您使用的方法看起来非常全面。尽管我觉得它有些过分了,但是如果这是您的用例所要求的,那么就没问题了。您可以检查此SO以获得更多见解。
我对以下行有评论
停止从应用程序运行后台,但不关闭服务
android.os.Process.killProcess(android.os.Process.myPid());
此方法将终止具有给定PID的进程。如果您的服务以此PID运行,那么它们也会被杀死。
从Android O开始,对后台执行施加了一些限制,由于这些限制,您无法使服务在后台运行。当您的应用程序退出时,操作系统将终止服务,就像您已调用一样stopSelf()
。因此,您将无法继续使用服务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句