JobScheduler

##JobScheduler API 允许开发者在某些符合条件的情况下创建执行在后台的任务。

##使用条件:api >=21 android 5.0以上

 

使用:

1,创建Job Service

public class JobSchedulerService extends JobService {

 

@Override

public boolean onStartJob( JobParameters  params ) {

 return false;

}

 

 @Override

public boolean onStopJob(JobParameters params) {

return false;

}

 }

 

在onStartJob()中返回:

true,则表示任务开始执行;

false表示任务已经执行完毕;

任务执行完毕需要执行jobFinished(JobParameters params, boolean needsRescheduled)来通知系统。

 

 

2,创建Handler

 

private Handler mJobHandler = new Handler( new Handler.Callback() {

 

@Override

public boolean handleMessage( Message msg ) {

Toast.makeText(getApplicationContext(),"JobService--task--running",Toast.LENGTH_ SHORT ) .show();

jobFinished( (JobParameters) msg.obj, false );

return true;

}

} );

 

因为Job Service 是运行在主线程的中的,所以需要开子线程,这里使用handler;

handler里面的内容即是‘自定义任务’,这里只弹出一个Toast测试;

不要忘记调用jobFinished( (JobParameters) msg.obj, false );

 

3,修改JobSchedulerService

 

@Override

public boolean onStartJob( JobParameters  params ) {

 mJobHandler.sendMessage( Message.obtain( mJobHandler, 1, params ) );

 return true;

}

 

 @Override

public boolean onStopJob(JobParameters params) {

 mJobHandler.removeMessages( 1 );

 return false;

}

 

4,在配置文件中注册服务

 

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

 

5,创建JobScheduler对象,并创建任务

 

public void startJobScheduler(Context context){

JobScheduler mJobScheduler = (JobScheduler)

    getSystemService( Context.JOB_SCHEDULER_SERVICE );

JobInfo.Builder builder = new JobInfo.Builder( 1,

        new ComponentName( getPackageName(),

            JobSchedulerService.class.getName() ) );

builder.setPeriodic( 3000 );

builder.setPersisted( true );

if( mJobScheduler.schedule( builder.build() ) <= 0 ) {

    //If something goes wrong

Toast.makeText(context, "StartJob is error", 1).show();

}

}

 

new ComponentName参数:任务标识符,Service组件的类名;

builder.setPeriodic( 3000 ):每三年一循环;

builder.setPersisted( true ):设备重启,任务继续;

mJobScheduler.schedule( builder.build() ):任务执行成功,返回int,值>0,反之,error

JobScheduler是Android中的一个调度框架,它可以用来在特定的时间间隔或特定的条件下执行任务,同时也可以用来保持应用的活跃状态。 在Android系统中,应用程序在后台运行时有一定概率被系统回收释放内存,为了提高应用的用户体验和功能完整性,我们可以使用JobScheduler来保活应用。 具体实现方法如下: 1. 在AndroidManifest.xml文件中注册JobService,用于执行任务和保活应用。设置jobService的权限,以及设置该service的处理逻辑。 2. 在需要保活的地方调用JobSchedulerschedule()方法,创建一个JobInfo对象,并设置好相关参数。其中包括指定要执行的JobService、执行的触发条件(如设备空闲时、特定时间间隔、特定网络状态等)、设置重试或重复执行等。 3. 通过JobScheduler.schedule()方法将JobInfo对象提交给系统进行调度。系统会根据设置的条件和触发机制来执行任务。 需要注意的是,JobScheduler的保活机制是通过系统的调度来实现的,并不能保证100%的成功保活。因为在一些特殊的情况下,如低内存、电池低、系统启动等情况下,系统可能会暂停或取消JobScheduler的任务。所以我们还需要配合其他的保活机制来提高保活的成功率,如使用前台服务、双进程守护、自启动、推送等。 总结起来,JobScheduler是Android系统提供的一种调度框架,可以在一定程度上保活应用。通过设置JobInfo的相关参数,然后由系统进行调度执行,以确保应用的持续运行和活跃状态。同时,为了提高保活的成功率,我们还需要结合其他的保活机制来综合应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值