如何在应用程序关闭时停止 Android 服务
How to stop Android service when app is closed
我正在努力 运行 持续保持服务,直到用户关闭应用程序。
我正在使用 onCreate()
方法中的 startService()
方法 activity 和 onDestroy()
方法中的 stopService()
方法。
现在我遇到了问题,因为当我旋转设备或关闭屏幕时,我的主要 activity 似乎死了并重新创建。
如何仅在用户手动停止应用程序时停止我的服务?
首先将 android:configChanges 节点添加到 Activity 的清单节点,以在设备旋转时停止重启 activity。
android:configChanges="keyboardHidden|orientation"
现在为了检测关闭应用程序事件,想一想用户可以手动关闭应用程序的方式。在 android 中,按后退按钮或主页按钮。
因此,为后退和主页按钮放置一个事件键监听器并终止服务。
I mean intentional app close. After user swipe out app on "recent apps" screen.
就Android而言,这不是"closing the app"。那就是 "removing the task"(或者有时 "stopping the task"——Google 在术语上不是很一致)。
删除任务后,您的服务应该被调用 with onTaskRemoved()
。但是,当用户通过概览屏幕(a.k.a.,最近任务列表)手动删除任务时,以及当任务在 Android 4.4 及以下版本自然消失时,这应该是因为任务是太老了。
在清单文件的服务标签中设置以下属性,
<service android:name="service" android:stopWithTask="true"/>
添加此项将在删除任务时调用服务的 ondestroy()
(应用从最近的应用列表中关闭)。
我正在努力 运行 持续保持服务,直到用户关闭应用程序。
我正在使用 onCreate()
方法中的 startService()
方法 activity 和 onDestroy()
方法中的 stopService()
方法。
现在我遇到了问题,因为当我旋转设备或关闭屏幕时,我的主要 activity 似乎死了并重新创建。
如何仅在用户手动停止应用程序时停止我的服务?
首先将 android:configChanges 节点添加到 Activity 的清单节点,以在设备旋转时停止重启 activity。
android:configChanges="keyboardHidden|orientation"
现在为了检测关闭应用程序事件,想一想用户可以手动关闭应用程序的方式。在 android 中,按后退按钮或主页按钮。 因此,为后退和主页按钮放置一个事件键监听器并终止服务。
I mean intentional app close. After user swipe out app on "recent apps" screen.
就Android而言,这不是"closing the app"。那就是 "removing the task"(或者有时 "stopping the task"——Google 在术语上不是很一致)。
删除任务后,您的服务应该被调用 with onTaskRemoved()
。但是,当用户通过概览屏幕(a.k.a.,最近任务列表)手动删除任务时,以及当任务在 Android 4.4 及以下版本自然消失时,这应该是因为任务是太老了。
在清单文件的服务标签中设置以下属性,
<service android:name="service" android:stopWithTask="true"/>
添加此项将在删除任务时调用服务的 ondestroy()
(应用从最近的应用列表中关闭)。