我正在学习如何使用JobScheduler。如onresume方法中所示,为了执行作业,我设置了要满足的条件,当设备未充电时,将安排作业,不管设备是否空闲,作业将每 7执行秒。如何使用Jobscheduler安排工作
在运行时,USB电缆连接到设备,以便安装应用程序,这意味着设备正在充电,所以在安装应用程序后 作业还没有启动,因为设备正在充电,但我拔掉后,我执行的作业 执行的工作,但发生的事情是,工作从未开始,我不明白为什么
请让我知道为什么这样的行为发生,请让我知道下面的答案问题会帮助我更好地理解 jobScheduler:
问:是setRequiresChargi ng(false)表示只有在设备不充电的情况下才会执行该任务,或者意味着无论设备是否充电,任务都将被执行?
主要活动
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private static int jobId = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.w(TAG, "onCreate");
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
Log.w(TAG, "onResume");
ComponentName serviceComponent = new ComponentName(this, MyJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(jobId, serviceComponent);
builder.setRequiresCharging(false);
builder.setRequiresDeviceIdle(false);
builder.setPeriodic(7 * 1000);
JobScheduler jobScheduler = (JobScheduler) getApplication().getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
}
}
jobService:
package example.com.jobscheduler_00;
public class MyJobService extends JobService {
private static final String TAG = MyJobService.class.getSimpleName();
@Override
public boolean onStartJob(JobParameters params) {
Log.w(TAG, "onStartJob JobId: " + params.getJobId());
Toast.makeText(this, "onStartJob JobId:" + params.getJobId(), Toast.LENGTH_SHORT).show();
jobFinished(params, false);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.w(TAG, "onStopJob");
Toast.makeText(this, "onStopJob JobId:" + params.getJobId(), Toast.LENGTH_SHORT).show();
return true;
}
}
“并且该作业每7秒执行一次” - Android 7.0+的最短时间为15分钟。我不记得Android 5.0-6.0的最低期限,但如果不到一分钟,我会感到惊讶。 – CommonsWare
谢谢先生..但正如你所说的“我不记得在Android 5.0-6.0的最短时间”..有没有其他的选择? – user2121