Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

force-closing an app with a service: onDestroy() is not called in service?

Tags:

android

I've implemented a sticky service and when I force close the app I see that the Activity's onDestroy() is called. But the service doesn't apparently do anything.


here's the 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}

as you can see, ServiceCommunicator() doesn't call: stopService(), finalize(), or onDestroy() ! I've put Log calls in all 3 of them.

how do I know when the service is force closed? I need to trap that event so that I can close files.

like image 740
Someone Somewhere Avatar asked Jul 01 '11 22:07

Someone Somewhere


1 Answers

how do I know when the service is force closed?

You don't. onDestroy() is not guaranteed to be called, on any component.

I need to trap that event so that I can close files.

Then don't leave them open.

like image 142
CommonsWare Avatar answered Nov 14 '22 21:11

CommonsWare