我有一个想要定期启动的 JobService。目前,为了测试,我正在使用一个简单的:
public class SenderService extends JobService {
    @Override
    public boolean onStartJob(final JobParameters params) {
        new Thread(new Runnable(){
            public void run(){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                jobFinished(params, false);
            }
        }).start();
        return true;
    }
    @Override
    public boolean onStopJob(JobParameters params) {
        return false;
    }
}
我安排这样的工作:
ComponentName serviceName = new ComponentName(this, SenderService.class);
JobInfo jobInfo = new JobInfo.Builder(JOB_ID, serviceName)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .setRequiresDeviceIdle(false)
        .setRequiresCharging(false)
        .setPersisted(true)
        .setPeriodic(10000)
        .build();
scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = scheduler.schedule(jobInfo);
if (result == JobScheduler.RESULT_SUCCESS) {
    Log.d(LOGTAG, "job created");
} else {
    Log.d(LOGTAG, "job not created");
}
但工作永远不会开始。如果我删除 setPeriodic(),它就会启动(但当然只有一次)。
到底是怎么回事?