I have two examples of Intentservice. One is the Download example in the commonsware book. the other is at http://www.vogella.com/articles/AndroidServices/article.html#servicecommunication_handler. Both of these examples show the service executing a finite task and they both apparently destroy themselves by running to the end of the scope of the onHandleIntent event.
The service I am writing has to have events and listen for things. One is a LocationListener listening for GPS movement. Another makes Posts to a REST service and listens for replys. I want it to run until a time has elapsed or until it was told to quit by the activity that started it.
How do I keep it running? Where, for instance, do I put my implementation of LocationListener? Thanks, Gary
You don't.
IntentService
is designed to do a piece of work (or perhaps a few off a queue, if commands happen to come in rapidly), then shut down.Then you should not be using an
IntentService
. Use a regularService
, with your own background thread(s) as needed.To keep a service running, your service need to return
START_STICKY
in the service methodonStartCommand()
.With this, the service will be running even if you exit form your activity.
Note: The Android still kills services after some time (30 mintus to 1 hour) if they are not foreground services. Use
startForeground(notification)
to make it foreground.good luck
You can achieve this in either of two ways,
AlarmManager is android's in-buite class that allows you to execute certain action on particular time peroid.
TimerTask does same thing as AlarmManager, you can repeat certain action of your code again and again.
However AlarmManager is ligher in the execution so i suggest you to go with AlarmManager class.
Create an AlarmManager that fetches the GPS Co-ordinates and post them to server on regular interval basis.
Have a look at to this AlarmManager Example.