如何退出并停止从应用程序运行后台但不关闭服务

普通话

我一直在寻找有关如何关闭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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当应用程序被杀死或关闭时,我如何保持后台 android 服务运行

应用程序在后台运行时如何停止服务

即使强制停止了应用程序,也要重新启动服务;关闭应用程序后,仍要在后台运行服务。

注销应用程序后如何停止后台服务?

如何在不关闭应用程序的情况下停止功能?

停止服务并关闭应用程序

当应用程序进入后台或用户退出应用程序时,如何停止计时器

再次运行应用程序时如何停止关闭的应用程序留下的线程?C#

硒关闭并退出后,应用程序不会停止

selenium关闭并退出后应用程序不会停止

如何创建Flutter后台服务,该后台服务在应用程序关闭时也可以使用

终端-在后台运行Java应用程序以及如何关闭它?

如何按需运行后台服务-不在应用程序启动或计时器上运行

当应用程序进入后台时停止MediaPlayer服务

当应用程序在后台时停止服务

从最近删除应用程序时停止后台服务

JavaFX-如何在退出应用程序之前关闭所有正在运行的线程?

在后台运行控制台应用程序,直到退出该应用程序

退出应用程序时Android停止服务

在不关闭应用程序的情况下停止执行任何方法

即使应用程序关闭,Android 应用程序也会通过在后台检查服务器(排球)中运行的服务显示通知

在带有节点Webkit的Mac OS上单击“ x”时,关闭窗口,但不关闭应用程序

Flutter:将应用程序作为后台服务运行

后台应用程序与服务

如何在不关闭 Tkinter 中的整个应用程序的情况下关闭特定窗口?

在 Android Studio 中更改片段时如何关闭 Unity 而不关闭整个应用程序?

如何在Linux上将DNX“控制台应用程序”作为后台服务运行?

如何将node.js应用程序作为后台服务运行?

当应用程序在本机后台运行时如何更新服务中的纬度和经度