如何终止 android 服务?
How to kill an android service?
我正在编写一个具有长期 运行 服务的应用程序。
我在服务的 onDestroy
方法中编写了一些状态保存代码。
我的意图是,如果服务因内存压力而被 Android 终止,则应该调用它。
如何模拟服务被内存压力杀死?
我已尝试 adb shell am force-stop com.example.app
但未调用服务的 onDestroy
方法。
onDestroy
是用于服务关闭状态保存的明智站点吗?
如果是这样,我如何才能让 Android 调用服务的 onDestroy
,以达到 debugging/testing 的目的?
如果您想以编程方式停止 Service
,请在 Service
内调用 stopSelf()
。
或者转到应用程序设置并强制停止。
强制停止不会在任何组件上调用 onDestroy
,无论是服务还是 activity。它完全关闭了应用程序,没有任何进一步的考虑。
我不确定,但如果您的服务不是 运行 作为前台服务,您可以通过从最近的应用程序菜单中删除该应用程序来关闭它。
您不应该依赖 onDestroy()
,因为它只会在服务正确停止(通过调用 stopService()
或 stopSelf()
方法)时被调用。
如果你想保存服务状态,你应该随时保存(例如播放器服务可以在 play/pause 功能激活时保存),或者使用定时器定期保存。
如果您想对内存事件做出反应,您应该使用 ComponentCallbacks2
class,它会在 Android 需要更多内存时通知您。如果您在这些回调中释放内存,您将增加服务在内存中停留更长时间的可能性。
希望这对您有所帮助。
我正在编写一个具有长期 运行 服务的应用程序。
我在服务的 onDestroy
方法中编写了一些状态保存代码。
我的意图是,如果服务因内存压力而被 Android 终止,则应该调用它。
如何模拟服务被内存压力杀死?
我已尝试 adb shell am force-stop com.example.app
但未调用服务的 onDestroy
方法。
onDestroy
是用于服务关闭状态保存的明智站点吗?
如果是这样,我如何才能让 Android 调用服务的 onDestroy
,以达到 debugging/testing 的目的?
如果您想以编程方式停止 Service
,请在 Service
内调用 stopSelf()
。
或者转到应用程序设置并强制停止。
强制停止不会在任何组件上调用 onDestroy
,无论是服务还是 activity。它完全关闭了应用程序,没有任何进一步的考虑。
我不确定,但如果您的服务不是 运行 作为前台服务,您可以通过从最近的应用程序菜单中删除该应用程序来关闭它。
您不应该依赖 onDestroy()
,因为它只会在服务正确停止(通过调用 stopService()
或 stopSelf()
方法)时被调用。
如果你想保存服务状态,你应该随时保存(例如播放器服务可以在 play/pause 功能激活时保存),或者使用定时器定期保存。
如果您想对内存事件做出反应,您应该使用 ComponentCallbacks2
class,它会在 Android 需要更多内存时通知您。如果您在这些回调中释放内存,您将增加服务在内存中停留更长时间的可能性。
希望这对您有所帮助。