jobservice 日记

本文介绍了如何在Android应用中使用JobScheduler服务创建周期性更新任务,包括设置电池状态、存储需求、网络类型等条件,并附加了自动重试功能,用于提示更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JobInfo jobInfo =
new JobInfo.Builder(AUTO_UPDATE_JOB_ID, new ComponentName(context, AutoUpdateJobService.class))
.setRequiresCharging(true)// 充电电量在百分之九十以上满足该条件
.setRequiresBatteryNotLow(true)
.setRequiresDeviceIdle(true)//idle状态调用,一般手机息屏静止35分钟左右会触发idle
.setRequiresStorageNotLow(true)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setPeriodic(UPDATE_PERIODIC)//周期性调用,最少间隔十五分钟
.build();
Object scheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
if (scheduler instanceof JobScheduler) {
int result = ((JobScheduler) scheduler).schedule(jobInfo);
RunLog.i(LOG_TAG, "finish the scheduler of job service, result:" + result);
AiEngineSpManager.setLastSchedulePluginPkgAutoUpdateTime(context, System.currentTimeMillis());
}

/**
 * 加入重试提示任务
 */
public void addRetryJobServiceToPromptUpdate() {
    ComponentName jobService = new ComponentName(ContextHolder.getAppContext(), UpdatePromptJobService.class);
    addJob(new JobInfo.Builder(JobIdConstants.UPGRADE_PROMPT_JOB_ID, jobService).setMinimumLatency(PROMPT_PERIODIC)//如果设置几秒,也会执行
        .setRequiresBatteryNotLow(true)
        .setRequiresStorageNotLow(true)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .build());
    RunLog.i(LOG_TAG, "addRetryJobServiceToPromptUpdate..");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值