Hi,

It is Upon to you to decide if you want to do startService() or bindService()

The meaning of startService is: wake up the service (create it if doesn't exist) and give it this command.

The service should know what's doing and, if the command is already running should just discard the new request (or whatever logic fit your app).

BindService say: give me a binder object to the service so that I can ask it directly for information.

Usually you send command with startService() and then forgot you asked for them.

If you want to know the state of a Service instead you bind to it.

A good practice I use when I have to show the state of some operation going on in background is binding to a service in the activity onCreate() and unbinding in onDestroy().

I define my service with a binder interface to let binded activities ask for informations about the state of the service (how many task are running, how many are pending, the progress of each one for example) and when I need (or when the user ask) I start a command with startService(). I develop the service so that it know what it is doing (which threads are running and doing what) so I know when to call stopSelf() when no more threads / operations are running.

I think Google Play app is doing something similar when showing if you are installing / upgrading an application.

This works very well because even if your activity die, is rotated or you need to know what's going on from different activities you just have to bind to it and ask.

Said so if you need to sync data remotely when opening your activity you should be using SyncAdapters
http://developer.android.com/training/sync-adapters/index.html

Regards,
Daniele Segato


On 08/08/2013 08:02 PM, ashish wrote:
Hi,

suppose an activity start a background service in the oncreate method
and now user switch to other activity and when my app is working in the
background then system kill my activity life-cycle but when i return to
my activity then system call the oncreate method of  my application and
then android system again start a new service again even the last one
working in the background..

On Thursday, August 8, 2013 4:53:27 AM UTC-8, Daniele Segato wrote:

    On 08/08/2013 01:40 PM, ashish wrote:
     > I read about services in Android very carefully, but I didn't
    find any
     > valid reasons to use it. E.g.
     >
     >  1.
     >
     >     By default services run in the main thread, which most of the
     >     applications don't want.
     >
     >  2.
     >
     >     A service can run on a seperate thread if it spawns it own
    thread.
     >     But if a service runs on a seprate thread, then the method
     >     |stopService(new Intent(getApplicationContext(),
     >     MyService.class));| does not stop the running service. Again
    this is
     >     a problem.
     >
     > If we want to do some background operations, then I think threads
    are
     > better than services. Am I right?

    You've been already told by others that Services should be used to
    MANAGE separate thread(s).

    The important part is that while an application is used to interact
    with
    the user a Service has no UI and can run in background.

    And with "background" I don't necessary mean off-the-main-thread.
    I mean that they can run even if the application (activities) is not
    used at the time.

    Services have a simpler life cycle in respect to activities and they
    are
    not influenced or killed by the framework by changes in configurations.

    Furthermore the framework will kill activities before starting to kill
    services. And if the framework decide to kill your service you can
    specify what you want to do with the request you received (drop it, ask
    the framework to re-do it, etc...)

    Services are a main component of the system and it is good practice to,
    for example, use them to update underling data (better if using a
    SyncAdapter) and manage remote calls.

    regards,
    Daniele Segato

--
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
---
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
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
--- You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to