i want to run a script even if the Task is destroyed. That works fine but is it possible to keep this service running, after the user destroyes the app?
I read something about binding the service but this is not working for me.
No. If the user uninstalls the app, all components are destroyed and removed from the operating system.
However, you can make a Service automatically restart after the app is killed (but not uninstalled) by starting through context.startService(Intent), and returning Service.START_STICKY in onStartCommand()
#Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
Related
My application need to run service in background even if user closed the app.
But, when I closed my app, the service stop and restart. So, all variables who are in the service are reset.
After search on google, I have found that :
#Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
But it do not work. My service is reset.
Hello you need to consider the fact that If your app targets API level 26 or higher, the system imposes restrictions on running background services when the app itself is not in the foreground. In most cases like this, your app should use a scheduled job instead. You can read more on this link:
Services
Did you add your service to the AndroidManifest.xml?
I read a lot about services I tried a lot of examples but unfortunately I couldn't understand how could I keep always services running to get activity recognition API always up and running.
In all cases Android OS killing somehow my running service.
What I tried:
I put START_STICKY but when it killed never runs again
#Override
public int onStartCommand(Intent intent, final int flags, int startId) {
// my code is here
return START_STICKY;
}
I started service again when I detected that service was killed. It not worked good as expected. I am sending broadcast and starting the service again.
#Override
public void onDestroy() {
sendBroadcast(new Intent("YouWillNeverKillMe"));
super.onDestroy();
}
I know about foreground services but in this case there is no way I can use foreground services. I have to forget about this solution.
Is there any other way you can suggest me as a solution? What exactly doing there Facebook or Viber that always I getting messages?
I wrote an App that will run process in a long time, possibly never ending until the user stop it.
But I afraid the App will get suspended when the mobile/tablet screen is sleep, or user switch to another app so that my app long running task is getting suspended.
How do I prevent that?
You can probably start a Service here if you want your Application to run in Background. This is what Service in Android are used for - running in background and doing longtime operations.
You can use START_STICKY to make your Service running continuously.
#Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleCommand(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
and see this :http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle
and This is an example of background service:
http://marakana.com/forums/android/examples/60.html
What you want is implement a Service.
It will have that behavior that you are asking.
You should use a Service and return START_STICKY on the onStartCommand() so that the system will not terminate your app. Even if it is terminated, the service is automatically restarted.
I am interested to know how WhatsApp runs in Android background system even after cleaning it from ram cleaner.
I made an Android app in which I started service and broadcast receiver but when I cleaned it using ram cleaner, both got stopped. Even sometimes push notifications are also not received when app is not running in background.
So, I just wanted to know that how WhatsApp manages all this. I am just giving an example as WhatsApp because I found its system amusing.
If you return START_STICKY from onStartCommand(), the system will automatically restart the service once it determines that it is not resource strained. Which means it will probably restart immediately if you have killed it using an app killer.
#Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
http://developer.android.com/reference/android/app/Service.html#START_STICKY
I have a service, which runs in a foreground. I understand that if a Foreground service is killed by the system, it's restarted after the availability of resources.
What I want to know is, if it will be restarted, even if the Foreground Service is manually killed from 'Running Services' section of 'Settings'?
If you want the service to restart after being killed use this method in the service object:
#Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleCommand(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}