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

时间:2015-03-28 22:24:35

标签: android service android-service

我正在努力让服务继续运行,直到用户关闭应用程序。

我在主要活动的startService()方法中使用onCreate()方法,在stopService()方法中使用onDestroy()

现在我遇到了问题,因为看起来我的主要活动已经消失,并在我旋转设备或关闭屏幕时重新创建。

如果用户手动停止应用,我该如何停止服务?

3 个答案:

答案 0 :(得分:67)

在清单文件

中的服务标签中设置以下属性
<service android:name="service" android:stopWithTask="true"/>

添加此内容会在删除任务时调用服务的ondestroy()(应用程序从最近的应用列表中关闭)。

答案 1 :(得分:13)

  

我的意思是故意关闭应用程序。用户在“最近的应用”屏幕上刷出应用后。

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

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

答案 2 :(得分:-13)

首先将android:configChanges节点添加到Activity的manifest节点,以便在设备旋转时停止重启活动。

android:configChanges="keyboardHidden|orientation"

现在,要检测关闭应用程序事件,请考虑用户可以手动关闭应用程序的方式。在android中,通过按后退按钮或主页按钮。 所以把一个事件关键监听器放回去&amp;主页按钮并终止服务。