Another approach, which may have benefits beyond the configuration change issue, is to make your service only tear down the expensive resource after a delay. Then, if you reconnect before that timeout, you can simply reuse the resource. So if you exit and come back soon into your app, for example, you can rebind and not have to redo the expensive initialization. If the initialization is really expensive, this may be well worthwhile.
I suspect the best way to do this is for the first binding the service to do a start of itself, and for the last unbind to post a delayed stopSelf(). On Apr 7, 4:44 pm, THill <[email protected]> wrote: > The default way configuration changes (i.e., rotates) are handled is > to destroy the activity & recreate it with a new one. What is the > recommended way to handle these changes in an activity that binds/ > unbinds to a service (that is possibly heavy/slow to start)? > > When the activity gets destroyed, it unbinds & causes the service to > be destroyed. When the new activity is created, it binds & recreates > the service. > > The only choices seem to be: > -- override onConfigurationChanged in the activity. Feels ok, but non- > conformant. > -- explicitly start the service & only stop it when the last activity > gets an onDestroy that's not due to a config change (i.e., there was > no call to onRetainNonConfigurationInstance). Feels icky. > -- explicitly start the service & don't stop it until some amount of > time after the last unbind. Ickier. > > On a related note, what happens between activity switches within a > process, where the first activity (A) starts the next activity (B) & > then calls finish() -- is there a guarantee that B.onCreate is called > before A.onDestroy? If not, and the activities share a service, the > same issue of keeping the service alive during this window exists, but > with only the icky workarounds. > > Suggestions? > > Thanks > Tim -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en To unsubscribe, reply using "remove me" as the subject.

