使用服务强制关闭应用程序:onDestroy()在服务中没有被调用?

Som*_*ere 7 android

我已经实现了一个粘性服务,当我强制关闭应用程序时,我看到Activity的onDestroy()被调用.但该服务显然没有做任何事情.


这是logcat:

07-01 22:35:30.397: DEBUG/ActivityMine(6505): onDestroy()

07-01 22:35:32.667: INFO/ActivityManager(71): Force stopping package my.large.package uid=10036

07-01 22:35:32.667: WARN/ActivityManager(71): Scheduling restart of crashed service my.large.package/.service.ServiceCommunicator in 5000ms

07-01 22:35:32.667: INFO/Process(71): Sending signal. PID: 6505 SIG: 9

07-01 22:35:32.687: INFO/ActivityManager(71):   Force stopping service ServiceRecord{451f65b8 my.large.package/.service.ServiceCommunicator}
Run Code Online (Sandbox Code Playgroud)

如您所见,ServiceCommunicator()不会调用:stopService(),finalize()或onDestroy()!我把Log调用放在了所有3个中.

我如何知道服务何时被强制关闭?我需要捕获该事件,以便我可以关闭文件.

Com*_*are 9

我如何知道服务何时被强制关闭?

你没有.onDestroy()不保证在任何组件上调用.

我需要捕获该事件,以便我可以关闭文件.

然后不要让它们打开.

  • 没有得到这个通知是非常烦人的,因为它似乎表明如果该状态需要持续超过关闭状态,则服务无法缓存其状态.这反过来增加了电池的使用(必须在每次状态变化时写入内部闪存)并导致过多的写入,这会增加闪存磨损的时间. (2认同)