Android : onDestroy of a service is never called

on Friday, September 26, 2014


I add a local service to my MainActivity, in the onResume, I did this



@Override
public void onResume() {
super.onResume()
boolean is_start = isMyServiceRunning(MyService.class)
if (is_start) {
bindMyService()
} else {
startMyService()
bindMyService()
}
}


In onPause I just simply do the "unBindMyService" operation.


Also, I add the Context.BIND_AUTO_CREATE flag to bind the service, the result is very strange.



  1. I can see MyService's "onCreate" and "onBind" with logcat, this goes smoothly

  2. When I switch to another activity or app, The "Unbind" is called, which is correct!

  3. When I "force stop" the service in settings, the "onDestroy" of the Service is called in response, that is OK.

  4. When I remove the app from the "Recent List" of the apps, there are no "onDestroy" of the Service is called, I can explain it as that the service is not terminated. also OK.

  5. What I can't explain is that after 4, I launched my app again, I've noticed that the "onCreate" and "onBind" of the service is called, but without a single "onDestroy" of the Service. Even when "is_start" is true, the Service is created again without an "onDestroy" called.


So what happened between 4 and 5? The service is still alive or is dead?


0 comments:

Post a Comment