我有一个 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(),那么它就会启动(但当然只有一次)。
到底是怎么回事?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)