Warm tip: This article is reproduced from serverfault.com, please click

Android job scheduler not persisted on reboot

发布于 2017-02-07 07:30:47

I have implemented Job scheduler in my project and it works fine in the case if the app is in background or if the app is killed. But it is not working if the device is rebooted. I have included

     JobInfo.Builder mBuilder = new JobInfo.Builder(TASK_ID, mComponentName);
     mBuilder.setPersisted(true);

in my builder and

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

in application manifest file.This is how I have added my service to manifest

     <service
        android:name="com.xxx.xxxx.service.MyJobService"
        android:permission="android.permission.BIND_JOB_SERVICE" />

Is there anything else to be included?

Thanks in advance

Questioner
Pooja Rajendran C
Viewed
0
karanatwal.github.io 2017-02-07 15:36:44

Register a BroadCastReciever for detecting BOOT_COMPLETED.

<receiver android:name="com.example.startuptest.StartUpBootReceiver">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

And in your BroadcastReceiver:

public class StartUpBootReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
        Log.d("startuptest", "StartUpBootReceiver BOOT_COMPLETED");
        ...
    }
  }
}

Once a user runs any activity in your app once, you will receive the BOOT_COMPLETED broadcast after all future boots.