问题描述
我正在使用JobScheduler安排某些工作在一天之内一次。以下是我的实现,但问题是,我的JobService的onStartJob()在调度作业或在取消后重新调度时首次调用。我的设备的android版本是9。
//MyJobService
public class MyJobSchedulerService extends JobService {
private static final String TAG = MyJobSchedulerService.class.getSimpleName();
@Override
public boolean onStartJob(JobParameters params) {
Log.i(TAG,"onstart");//calling single time either scheduling first time or scheduling after cancel
jobFinished(params,true);
//my work
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.i(TAG,"onstop");
return false;
}
}
//MyBootReceiver
public class MyBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context,Intent intent) {
String intentAction = intent.getAction();
if (intentAction != null) {
ComponentName componentName = new ComponentName(context,MyJobSchedulerService.class);
JobInfo.Builder builder = new JobInfo.Builder(101,componentName);
builder.setPeriodic(TimeUnit.DAYS.toMillis(1));
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
builder.setPersisted(true);
JobScheduler mJobScheduler = (JobScheduler) context.getSystemService(JOB_SCHEDULER_SERVICE);
JobInfo pendingJobInfo = mJobScheduler.getPendingJob(101);
if (intentAction.equals(Intent.ACTION_BOOT_COMPLETED)) {
if (pendingJobInfo == null)
mJobScheduler.schedule(builder.build());
Log.i("MyBootReceiver"," pendingJobInfo "+(pendingJobInfo == null));
}
}
}
}
//Manifest
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<service android:name=".MyJobSchedulerService"
android:permission="android.permission.BIND_JOB_SERVICE"/>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)