如何在 JobScheduler 中保留上下文
How to preserve context in JobScheduler
我有一份工作
public class MyPeriodicJob extends JobService{
@Override
public boolean onStartJob(JobParameters jobParameters) {
// do something (but context is needed)
return false;
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
return false;
}
}
在MainActivity中启动
private void scheduleJob(){
JobScheduler jobScheduler = (JobScheduler)getApplicationContext()
.getSystemService(JOB_SCHEDULER_SERVICE);
ComponentName componentName = new ComponentName(this,
MyPeriodicJob.class);
JobInfo jobInfo = new JobInfo.Builder(1, componentName)
.setPeriodic(86400000)
.setPersisted(true).build();
jobScheduler.schedule(jobInfo);
}
设备可能会重新启动,但作业预计会持续存在。如何将上下文(必须持续存在)传递给 MyPeriodicJob
?
作业服务是服务 class 的子项,因此您无需在任何地方传递上下文,因为它已经存在。服务class本身属于ContextWrapper,属于Context。所以就用这个吧。(你需要的语境功能)
我有一份工作
public class MyPeriodicJob extends JobService{
@Override
public boolean onStartJob(JobParameters jobParameters) {
// do something (but context is needed)
return false;
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
return false;
}
}
在MainActivity中启动
private void scheduleJob(){
JobScheduler jobScheduler = (JobScheduler)getApplicationContext()
.getSystemService(JOB_SCHEDULER_SERVICE);
ComponentName componentName = new ComponentName(this,
MyPeriodicJob.class);
JobInfo jobInfo = new JobInfo.Builder(1, componentName)
.setPeriodic(86400000)
.setPersisted(true).build();
jobScheduler.schedule(jobInfo);
}
设备可能会重新启动,但作业预计会持续存在。如何将上下文(必须持续存在)传递给 MyPeriodicJob
?
作业服务是服务 class 的子项,因此您无需在任何地方传递上下文,因为它已经存在。服务class本身属于ContextWrapper,属于Context。所以就用这个吧。(你需要的语境功能)