【发布时间】:2015-10-01 08:06:16
【问题描述】:
我有一个以BOOT_COMPLETED 开头的服务。该服务定期向服务器发送 GPS 数据。有时操作系统会在内存后终止该服务,但没有调用服务的onDestroy() 方法。当我的服务重新启动时,我可以在哪里放置一些用于保存和恢复的值?
【问题讨论】:
标签: android
我有一个以BOOT_COMPLETED 开头的服务。该服务定期向服务器发送 GPS 数据。有时操作系统会在内存后终止该服务,但没有调用服务的onDestroy() 方法。当我的服务重新启动时,我可以在哪里放置一些用于保存和恢复的值?
【问题讨论】:
标签: android
简单地说:您不能使用常规的服务生命周期事件。
如果没有调用onDestroy() 方法,系统会以艰难的方式杀死进程,而不会正确终止它。由于没有事件,您必须使用其他回调来检测可能的终止情况。
唯一可能有帮助的方法是收听onTrimMemeroy 或onLowMemeroy,尽管这些回调并不意味着您的服务将被终止,它可能有助于您何时保存数据。
更多信息可以在这里找到:http://developer.android.com/reference/android/content/ComponentCallbacks2.html
作为参考,以下是正确终止服务的生命周期:
【讨论】:
你可以使用onTrimMemeroy()和onLowMemeroy()方法来处理这个问题,关于这两种方法的详细说明可以从here获得
【讨论】: