Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Local service or remote service?

I have a background Service which must run permanently. The service just has to interact with my Activity.

  1. How to i check on activity resume if the service is still running? Is there a better possibility than a static variable in the service class?

  2. Is it of advantage to use a remote service in a separate process(to extend service life time) so that when the activity process gets killed the service is still alive?

like image 237
Sney Avatar asked Jul 19 '10 14:07

Sney


3 Answers

I have a background service which must run permanently.

This is not possible. The user or Android will kill off your service at some point. Please reconsider your architecture.

How to i check on activity resume if the service is still running?

Generally, you don't.

Is there a better possibility than a static variable in the service class?

That will not work if the user or Android kills off your service.

Is it of advantage to use a remote service in a separate process(to extend service life time) so that when the activity process gets killed the service is still alive?

A remote service has nothing to do with whether the service runs after activities are destroyed. If you call startService(), the service will run, independent of any activities, until:

  • you call stopService() from an activity
  • the service calls stopSelf()
  • Android terminates the service
  • the user terminates the service via the Settings application
  • the user terminates the service via a "task killer" (Android 2.1 and earlier, at least)
like image 107
CommonsWare Avatar answered Oct 13 '22 19:10

CommonsWare


Why do you want to know if the Service is running? If you need something from it, just throw an Intent and if it's not running it will start by the intent.

In relation with the second question:

Your service will not "die" when your Activity closes.

like image 3
Macarse Avatar answered Oct 13 '22 18:10

Macarse


Start the service in startforeground(). It will increase the timespan of the service.

like image 3
Rohan K Avatar answered Oct 13 '22 18:10

Rohan K