如何在 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。所以就用这个吧。(你需要的语境功能​​)