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.

Reply via email to