停止前台服务 Android
Posted
技术标签:
【中文标题】停止前台服务 Android【英文标题】:Stop foreground service Android 【发布时间】:2018-11-11 13:06:52 【问题描述】:我正在开发一个 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()
方法会被调用,但服务会继续运行。但是,我可以在异步任务完成后停止服务。
我有以下问题:
-
当应用程序从最近的应用程序列表中被杀死时如何停止服务?
是否有可能服务被终止但异步任务继续运行?如果是,如何解决?
我将不胜感激有关此主题的任何建议和想法。谢谢。
编辑:
方法stopForegroundService()
被调用,前台服务通知被移除但异步任务没有停止。如何解决这个问题?
【问题讨论】:
如果您不希望在应用程序终止后运行它,您根本不需要前台服务。此外,您可能希望为您的活动创建服务连接,一旦活动被终止,服务也将停止 感谢您的回复。如何在活动和服务之间建立联系?我正在从活动的 onDestroy 函数调用 stopForegroundService() 方法。 【参考方案1】:好像某些线程仍然没有被正确杀死?
更新
尝试在清单文件中添加这个属性stopWithTask="true"
<service
android:enabled="true"
android:name=".ExampleService"
android:exported="false"
android:stopWithTask="true" />
请参考这个答案。希望对您有所帮助https://***.com/a/53334788/10069542
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 how to answer 对此我深表歉意。现在我更新了我的答案。谢谢以上是关于停止前台服务 Android的主要内容,如果未能解决你的问题,请参考以下文章
当我在 Android 设置中手动禁用位置时,为啥 Android 前台服务会停止?
为啥在 Android Oreo 上关闭屏幕时前台服务停止?