JSS 第 1 篇 - JobSchedulerService 概述

概述


对于满足网络、电量、时间等一定预定条件而触发的任务,那么jobScheduler便是绝佳选择。JobScheduler主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况,那么可以创建一个JobService的子类,重写其onStartJob()方法来实现这个功能。
 
JobScheduler的schedule过程:
   
   
  1. JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
  2. ComponentName jobService = new ComponentName(this, MyJobService.class);
  3. JobInfo jobInfo = new JobInfo.Builder(123, jobService) // 任务Id等于123
  4. .setMinimumLatency(5000)// 任务最少延迟时间
  5. .setOverrideDeadline(60000)// 任务deadline,当到期没达到指定条件也会开始执行
  6. .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)// 网络条件,默认值NETWORK_TYPE_NONE
  7. .setRequiresCharging(true)// 是否充电
  8. .setRequiresDeviceIdle(false)// 设备是否空闲
  9. .setPersisted(true) // 设备重启后是否继续执行
  10. .setBackoffCriteria(3000JobInfo.BACKOFF_POLICY_LINEAR) // 设置退避/重试策略
  11. .build();
  12. scheduler.schedule(jobInfo);
JobScheduler 的 cancel 过程:
    
    
  1. scheduler.cancel(123); // 取消jobId=123的任务
  2. scheduler.cancelAll(); // 取消当前uid下的所有任务
可以看到,JobScheduler 这个类只是一个客户端的代理类,代码位于:

frameworks/base/core/java/android/app/job/JobScheduler.java

1 JobScheduler
    
    
  1. package android.app.job;
  2. import android.annotation.NonNull;
  3. import android.annotation.Nullable;
  4. import android.annotation.SystemApi;
  5. import java.util.List;
  6. public abstract class JobScheduler {
  7.   // 调用 schedule 方法返回的结果码
  8. public static final int RESULT_FAILURE = 0;
  9. public static final int RESULT_SUCCESS = 1;
  10. // 注册一个任务到系统中!
  11. public abstract int schedule(JobInfo job);
  12. @SystemApi
  13. public abstract int scheduleAsPackage(JobInfo job, String packageName, int userId, String tag);
  14. // 取消该 package 设置的 ID 为 iobId 的任务!
  15. public abstract void cancel(int jobId);
  16. // 取消该 package 设置的所有 Job!
  17. public abstract void cancelAll();
  18. public abstract @NonNull List<JobInfo> getAllPendingJobs();
  19. public abstract @Nullable JobInfo getPendingJob(int jobId);
  20. }
上面是应用中调用的 JobScheduler 对象,他是一个抽象类;实际上,我们获得的是服务端的代理对象:JobSchedulerStub 对象,他继承了 IJobScheduler.Stub!详情,请看第二篇!










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值