android 5.0发布快半年了 终于有时间去了解他的一些例子了
对于Jobscheduler例子 在MainActivity的onCreate方法中 除了初始化一些组建之后启动了 最关键的服务 代码如下
Intent startServiceIntent = new Intent(this, TestJobService.class);
startServiceIntent.putExtra("messenger", new Messenger(mHandler));
startService(startServiceIntent);
然后 有两个点击时间的方法
/**
* UI onclick listener to schedule a job. What this job is is defined in
* TestJobService#scheduleJob().
*/
public void scheduleJob(View v) {
if (!ensureTestService()) {
return;
}
//咋个创建一个JobInfo对象 应用build模式 然后设置一个表示id和一个server组建
JobInfo.Builder builder = new JobInfo.Builder(kJobId++, mServiceComponent);
//设置岩石
String delay = mDelayEditText.getText().toString();
if (delay != null && !TextUtils.isEmpty(delay)) {
builder.setMinimumLatency(Long.valueOf(delay) * 1000);
}
//设置截至日期
String deadline = mDeadlineEditText.getText().toString();
if (deadline != null && !TextUtils.isEmpty(deadline)) {
builder.setOverrideDeadline(Long.valueOf(deadline) * 1000);
}
//设置执行任务的网络的环境
boolean requiresUnmetered = mWiFiConnectivityRadioButton.isChecked();
boolean requiresAnyConnectivity = mAnyConnectivityRadioButton.isChecked();
if (requiresUnmetered) {
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
} else if (requiresAnyConnectivity) {
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
}
//
builder.setRequiresDeviceIdle(mRequiresIdleCheckbox.isChecked());
builder.setRequiresCharging(mRequiresChargingCheckBox.isChecked());
//回调 server方法
mTestService.scheduleJob(builder.build());
}
public void cancelAllJobs(View v) {
JobScheduler tm =
(JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
tm.cancelAll();
}
/**
* UI onclick listener to call jobFinished() in our service.
*/
public void finishJob(View v) {
if (!ensureTestService()) {
return;
}
mTestService.callJobFinished();
mParamsTextView.setText("");
}
cancelAllJobs
方法 是取消所有作业的方法 通过获取
JobScheduler
<pre name="code" class="java">JobScheduler
JobScheduler
JobScheduler 对象调用cancelall方法取消所有惹怒
在server累中
/** Send job to the JobScheduler. */
public void scheduleJob(JobInfo t) {
Log.d(TAG, "Scheduling job");
JobScheduler tm =
(JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
tm.schedule(t);
}
这个天假调度的方法 当瞧见满足 就会调度
//在jobschedulerservice中用一个linkedhashmap保存 任务
@Override
public boolean onStopJob(JobParameters params) {
// Stop tracking these job parameters, as we've 'finished' executing.
jobParamsMap.remove(params);
if (mActivity != null) {
mActivity.onReceivedStopJob();
}
Log.i(TAG, "on stop job: " + params.getJobId());
return true;
}
这个方法是重写父类的 可以做一些回调操作 通知mainactivity