android Jobscheduler的用法

来源:互联网 发布:熊猫手机直播软件下载 编辑:程序博客网 时间:2024/05/17 00:14

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


0 0