如何测试每24小时运行一次的定期JobScheduler

时间:2019-01-04 04:05:17

标签: android testing android-jobscheduler

我有一个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();
}

}

0 个答案:

没有答案