My code snippet was not full. I use ServiceConnection and do save the
state of the service (binded/unbinded) to avoid unnecessary binding.

Anyhow, thanks for the details. I believe I know now how to rewrite me
code.

Yossi

On Jul 19, 11:49 pm, Dianne Hackborn <hack...@android.com> wrote:
> The onPause()  method in this example is broken, because if
> shouldStopService() returns false then it won't unbind, and the next time
> the activity gets resume it will then go and re-build, causing a growing
> number of bindings.
>
> On Sun, Jul 19, 2009 at 7:58 AM, Guillaume Perrot
> <guillaume.p...@gmail.com>wrote:
>
>
>
>
>
>
>
> > Using both startService and bindService is handy to wait for the
> > onServiceConnected callback before requesting a singleton reference
> > that is set in the service's onCreate.
> > If you do this just after the startService, the reference will be
> > null.
> > The startService is needed for the service to continue running when
> > the activities have been destroyed (and call unbind).
> > A use case is a service managing a background XMPP connection in a
> > chat/social application (only the "sign out" user action would call
> > stopService).
> > So, Mark I don't understand your point when you say not to use both
> > startService and bindService.
>
> > On 19 juil, 13:47, Mark Murphy <mmur...@commonsware.com> wrote:
> > > Yossi wrote:
> > > > Hi Mark,
>
> > > > My code is relatively simple
>
> > > > public void onResume()
> > > > {
> > > >    Intent intent = new Intent(this, TrackingService.class);
> > > >    startService(intent);
> > > >    bindService(intent, _connection, Context.BIND_AUTO_CREATE);
> > > > }
>
> > > Do either startService() or bindService(), not both.
>
> > > > public void onPause()
> > > > {
> > > >    if(shouldStopService())
> > > >    {
> > > >            unbindService(_connection);
> > > >            stopService(new Intent(this, TrackingService.class));
> > > >    }
> > > > }
>
> > > Do either unbindService() or stopService(), matching up with what you
> > > chose to do in onResume().
>
> > > Unless your service is in some other process (which the use of
> > > TrackingService.class suggests it is not), you probably do not want to
> > > use bindService()/unbindService(). Use startService() to start it, then
> > > use stopService() only when you want to stop the service. Since it is in
> > > your process, use other means (e.g., static singleton reference to the
> > > service) to communicate with it from the activity.
>
> > > Right now, your service stop shortly after your activity goes
> > > off-screen, because you are telling the service to stop in onPause().
>
> > >http://developer.android.com/reference/android/app/Service.html#Servi...
>
> > > --
> > > Mark Murphy (a Commons Guy)http://commonsware.com|
> >http://twitter.com/commonsguy
>
> > > Android 1.5 Programming Books:http://commonsware.com/books.html
>
> --
> Dianne Hackborn
> Android framework engineer
> hack...@android.com
>
> Note: please don't send private questions to me, as I don't have time to
> provide private support, and so won't reply to such e-mails.  All such
> questions should be posted on public forums, where I and others can see and
> answer them.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to