停止前台服务Android

时间:2018-06-01 11:37:51

标签: android service android-asynctask foreground-service

我正在开发一个Android应用程序,我在其中创建前台服务。下面是杀死前台服务的代码:

private void stopForegroundService()
    {
        Log.d(TAG_FOREGROUND_SERVICE, "Stop foreground service.");
        if(downloadAsyncTask!=null) //to stop async task
            downloadAsyncTask.cancel(true);

        // Stop foreground service and remove the notification.
        stopForeground(true);

        // Stop the foreground service.
        stopSelf();
    } 

我想在用户从“最近的应用”列表中杀死应用时停止此服务。我在服务类中有方法onDestroy()onTaskRemoved()。从这些函数中调用stopForegroundService()

当用户从最近的应用列表中杀死应用时,会调用stopForegroundService()方法,但服务会继续运行。但是,我可以在异步任务完成时停止服务。

我有以下问题:

  1. 如何从最近的应用列表中杀死应用程序时停止服务?
  2. 该服务是否可能被杀死但异步任务继续运行?如果是的话,如何解决?
  3. 我很感激有关此主题的任何建议和想法。谢谢。

    修改

    调用方法stopForegroundService(),删除前台服务通知但不停止异步任务。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好像某些线程仍然没有被正确杀死?

更新
尝试在清单文件

中添加此属性stopWithTask="true"
<service
android:enabled="true"
android:name=".ExampleService"
android:exported="false"
android:stopWithTask="true" />

请参阅此答案。希望有帮助
https://stackoverflow.com/a/53334788/10069542