我正在开发一个应用程序,其中我使用了一个后台服务,并将我的数据保存到共享首选项中(因为我知道Android在低内存状态下可能会杀死服务)。它工作得很好,我定期将我的数据保存到首选项中。但是在一种罕见的情况下,我注意到当Android杀死并重新启动我的服务时(这之间有大约20-30秒的间隔),在此期间我的首选项被自动清除了。我查看了转储状态以推断其原因,但我无法理解为什么会发生这种情况。
以下是日志的相关部分,表明首选项中的数据已被清除:
虽然这种情况没有再次发生,但我真的想知道在幕后发生了什么,以及为什么会发生。我在这里搜索了其他类似的线程,但它们指出了将空键插入到首选项中的情况,所以我猜这是完全不同的情况。
任何帮助都将不胜感激。此外,作为信息,这个问题出现在三星Galaxy Note 2设备上。
以下是日志的相关部分,表明首选项中的数据已被清除:
06-25 17:30:34.848 2452 2966 V ApplicationPolicy: isApplicationStateBlocked userId 0 pkgname com.example.gaurav
06-25 17:30:34.863 2452 2966 D EnterpriseDeviceManager: ContainerId: 0
06-25 17:30:34.863 2452 2966 V ApplicationPolicy: isApplicationStateBlocked userId 0 pkgname com.example.gaurav
06-25 17:30:34.863 2452 2966 D PackageManager: START CLEAR APPLICATION USER DATA: observer{1126181288}
06-25 17:30:34.863 2452 2966 D PackageManager: pkg{<packageName>}
06-25 17:30:34.863 2452 2966 D PackageManager: user{0}
06-25 17:30:34.898 2831 2831 D ContainerEventsRelayManager: <<< Intent action is >>> : android.intent.action.PACKAGE_RESTARTED
06-25 17:30:34.898 2831 2831 D ContainerEventsRelayManager: <<< Intent data is >>> : package:com.example.gaurav
06-25 17:30:34.898 2695 2695 D ContexualWidgetMonitor: id = 0
06-25 17:30:34.898 2695 2695 D ContexualWidgetMonitor: action =android.intent.action.PACKAGE_RESTARTED
06-25 17:30:34.898 2695 2695 D ContexualWidgetMonitor: pkg =null
06-25 17:30:34.898 2695 2695 D ContexualWidgetMonitor: mCheckMissedEvent =false
06-25 17:30:34.903 2831 2831 D ContainerEventsRelayManager: <<< Intent action is >>> : android.intent.action.PACKAGE_DATA_CLEARED
06-25 17:30:34.903 2831 2831 D ContainerEventsRelayManager: <<< Intent data is >>> : package:com.example.gaurav
06-25 17:30:34.908 2452 2580 I PackageManager: remove MCS_UNBIND message and Posting MCS_UNBIND 10 secs later
虽然这种情况没有再次发生,但我真的想知道在幕后发生了什么,以及为什么会发生。我在这里搜索了其他类似的线程,但它们指出了将空键插入到首选项中的情况,所以我猜这是完全不同的情况。
任何帮助都将不胜感激。此外,作为信息,这个问题出现在三星Galaxy Note 2设备上。