如何在应用关闭时停止Android服务

Kam*_*mil 20 service android android-service

我正在努力让服务不断运行,直到用户关闭应用程序.

我使用的是startService()从方法onCreate()我的主要活动的方法,并stopService()onDestroy()方法.

现在我有问题了,因为看起来我的主要活动已经死亡并且在我旋转设备或关闭屏幕时重新创建.

仅当用户手动停止应用程序时,如何停止我的服务?

CVA*_*CVA 75

在清单文件中的服务标签中设置以下属性,

<service android:name="service" android:stopWithTask="true"/>
Run Code Online (Sandbox Code Playgroud)

添加此项将在ondestroy()删除任务时调用该服务(应用程序从最近的应用程序列表中关闭).

  • 就我而言,它不起作用,因为我正在使用AlarmManager启动服务。但是对于例如在活动内部打开的服务,这似乎是正确的答案。 (2认同)

Com*_*are 13

我的意思是故意app关闭.用户在"最近的应用"屏幕上滑动应用.

就Android而言,这不是"关闭应用程序".那就是"删除任务"(或者有时候"停止任务" - 谷歌在术语上并不十分一致).

您的服务应该被称为onTaskRemoved()当任务被删除.但是,当用户通过概览屏幕(也就是最近任务列表)手动删除任务时以及任务在Android 4.4及更低版本上自然消失时,这应该是因为任务太旧了.

  • Android中的术语不一致使我发疯...:/ (2认同)