JobService的使用

一、前言

JobService是用来优化后台进程的一个技术,最早是在API21,也就是Android 5.0的时候提供支持。虽然现在官方推荐使用WorkManager来做后台优化,但是在有些项目上可能还会有人使用这个技术,所以这里进行一个简答的记录,以便可以进行维护。另外就是在Android7.0以后,无法再通过清单文件中注册CONNECTIVITY_ACTION来监听网络状态变化。还有就是如果使用某些定时任务的话,在API19之后使用AlarmManager不一定能保证其时效性,所以也需要使用JobService或者WorkManager来处理。

二、初步使用

JobServiceService的子类,也是对Service的加强,需要与JobSchedulerJobInfo配合使用。对于另外两个的简单理解就是JobScheduler是用来对JobService进行调度的,决定其执行的时机和频次。JobInfo是用来设置一些JobService的执行信息,这里看个简单示例进行加深了解。

TextJobService.java

//需要实现两个函数onStartJob()和onStopJob()
//默认运行在主线程,所以需要开启一个子线程
public class TestJobService extends JobService {
    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        work.start();
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
        return false;
    }

    private Thread work = new Thread(new Runnable() {
        @Override
        public void run() {
            Log.e("YM-->","--->执行一个任务");
        }
    });

}

TestActivity.java

public class TestActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        scheduleService();
    }

    //运行一个服务
    private void scheduleService(){
        JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
        JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(this, TestJobService.class));  //指定哪个JobService执行操作
        jobScheduler.schedule(builder.build());
    }
}

AndroidManifest.xml

<service android:name=".TestJobService"
         android:permission="android.permission.BIND_JOB_SERVICE"/>

需要注意的是JobService不适合做与前台有交互的任务,双方没有办法互传数据(使用BroadcastReceiver之类的除外)。不过传递给JobService倒是可以

五、参考链接

  1. Android优化篇——后台优化 - 简书

  2. 后台优化  |  Android 开发者  |  Android Developers

  3. Android秘技之JobService的使用详解-随迹(包含了各个使用参数解释)

  4. JobIntentService  |  Android Developers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值