我有一个JobScheduler计划每24小时运行一次。但是我如何确保它每24小时执行一次?我以较小的时间间隔进行了测试,它似乎可以工作,但想使用我的真实值进行测试,即24小时(24 * 60 * 60 * 1000 ms)。我该怎么办-看起来JobScheduler不受设备时间的影响,因为即使我更改设备时间也没有任何反应。
我知道以下命令。它将强制运行JobScheduler。
adb shell cmd jobscheduler run -f <packagename> <Job Id>
但是我想在更真实的场景中进行测试。
下面是我的JobScheduler代码。
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(Constants.JOB_ID, new ComponentName(context,
MyJobService.class));
builder.setPeriodic(Constants.JOB_SCHEDULER_INTERVAL);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
builder.setPersisted(true);
jobScheduler.schedule(builder.build());
我的JobScheduler服务
public class MyJobService extends JobService {
private final String TAG = "JobService";
@Override
public boolean onStartJob(final JobParameters params) {
LogUtil.i(TAG, "onStartJob");
Server.fetchRemoteConfig(new JobStatus() {
@Override
public void success() {
LogUtil.i(TAG, "onStartJob - success");
jobFinished(params, false);
}
@Override
public void failure() {
LogUtil.i(TAG, "onStartJob - failure");
jobFinished(params, true);
}
});
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
LogUtil.i(TAG, "onStopJob");
return true;
}
public interface JobStatus {
void success();
void failure();
}
}