Android JobService组件简要

JobService简介:

JobService是Android L版本加入的组件,JobService是继承自Service的抽象类,为Service的加强和优化.

由系统统一管理和调度,在特定场景下(网络状态等等)使用JobService更加灵活和省心。

 可以在应用退出后,重新启动应用后,系统将PersistableBundle数据回调到JobService对原来的事务进行处理。

JobService是JobScheduler的回调,是Job请求的实际处理类。

需要覆写onStartJob(JobParameters)方法,并实现实际的任务逻辑。

因为JobService的执行是在APP的主线程里响应的, 所以必须提供额外的异步逻辑去执行这些任务。

 

JobService的方法:

 //Job开始的时候的回调,实现具体的业务。

 //如果返回false的话,系统会结束该job;

 onStartJob()

 

//Job的任务执行完毕后,APP端主动调用,用以通知JobScheduler已经完成了任务。

 //该方法执行完后会回调onDestroy()

jobFinished()

 

//停止该Job。当JobScheduler检测Job条件不满足的时候,或者job被抢占被取消的时候的强制回调。

 //如果想在这种意外的情况下让Job重新开始,返回值设置为true。

 onStopJob()

 

JobService是实际的执行和停止任务的回调入口。 JobScheduler对JobInfo进行管理。

JobScheduler为系统的服务,类似AMS,WMS之类.

 

使用方式

 1. 类似启动Servcie方式,启动自定义的JobService    

      Intent startServiceIntent = new Intent(mContext, JzgkJobService.class);

      mContext.startService(startServiceIntent);

2. 创建JobInfo,并通过JobScheduler加入到系统管理的服务中

        //JobInfo 指定到对应的JobService组件中,并附上对应的JobId

        JobInfo.Builder builder = new JobInfo.Builder(++mJobId, startServiceIntent);

        //特定条件下执行, 例如此处为任意网络环境

        builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);

         // Extras, work duration.   

         //创建持久化数据存储        

         PersistableBundle extras = new PersistableBundle();   

         builder.setExtras(extras);

           //加入到系统管理的服务中   

         mJobScheduler.schedule(builder.build());

 3. JobService onStartJob实现    

          @Override    

          public boolean onStartJob(JobParameters params) {

                 //获取持久化数据        

                PersistableBundle persistableBundle = params.getExtras();

               //业务处理  

          }

 

高考服务在线

你可能感兴趣的:(Android)