用服务强制closures应用程序:onDestroy()不在服务中调用?

我已经实现了一个粘性服务,当我强制closures应用程序时,我看到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} 

如你所见,ServiceCommunicator()不会调用:stopService(),finalize()或onDestroy()! 我已经把所有3个日志调用。

我怎么知道服务何时closures? 我需要捕捉该事件,以便我可以closures文件。

Solutions Collecting From Web of "用服务强制closures应用程序:onDestroy()不在服务中调用?"

我怎么知道服务何时closures?

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

我需要捕捉该事件,以便我可以closures文件。

那么不要让它们打开。

期待一个服务是强制closures似乎有点怪异的我。 无论如何,如果进程终止,我希望任何打开的文件句柄被closures的Linux子系统。

另外正如CommonsWare所述,onDestroy在任何情况下都不能保证。

这更糟糕。 onDestroy只在模拟器环境(用于testing)中调用,但从不在真实的手机上。

就像@mibollmba所说的那样 – 当进程死亡时,文件将被closures。 无需处理文件closures。