I'm trying to create a service that will do background jobs for me even after the user closes the app from the running processes menu(by shifting process out of the screen).
What I tried to do is create service in a different process by declaring it like this:
<service
android:name=".service.Service"
android:enabled="true"
android:icon="@drawable/ic_launcher"
android:process=":my_process" >
</service>
and the onStartCommand() is:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
Actually there are different kinds of services you can implement. Use a Service instead of
IntentService
. There you need to look atSTART_STICKY
,START_NOT_STICKY
andSTART_REDELIVER_INTENT
you can keep your service running in background even if your activity dies. Android services also look atAIDL
servicesServices were designed to run in the background, no need for a different process.
From the services documentation:
The service however, should stop itself, when its work is done. IntentService is the easiest way to start implementing a service.
According to the Android documentation you can achieve this behavior by using the attribute:
By the way, I know that it's not answering the question but it might help some people as well - lately, I found out about a great third-party lib that Evernote developers have created. Its name is Android-Job and its aim is to create jobs that run on different processes and can become active again even after a device reboot, it's amazing.
For this you can use Handler and Runnable class
This task run continuously 3min