我的服务通常由BroadcastReceiver为RECEIVE_BOOT_COMPLETED启动,并使用START_STICKY标志实现,如下所示:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_STICKY;
}
因此,在许多情况下,当用户启动应用时,该服务已在后台运行。然后我的活动绑定它以从服务中读取信息。
然而,当用户然后去除活动(通过终止应用程序)时,我的服务现在也已经被销毁,然后通过start_sticky重新启动。这导致我保留在服务中的一些信息丢失。
有没有办法保存我的服务实例,只是让我的活动来来去去,根据需要绑定它?
答案 0 :(得分:2)
无法确保服务(或应用程序的任何组件)不会被杀死。如果您有需要保留的数据,则可以使用这些技术中的任何一种。
http://developer.android.com/guide/topics/data/data-storage.html
SharedPerferences非常易于使用。
以下是开发人员文档(和链接)中的部分,其中说明了系统如何启动和停止应用程序。
默认情况下,每个应用都在自己的Linux进程中运行。 Android启动 当需要执行任何应用程序组件的过程时,然后 当不再需要或系统时关闭进程 必须为其他应用恢复内存。
http://developer.android.com/guide/components/fundamentals.html