gpt4 book ai didi

Android 作业调度程序周期性任务在一段时间后或设备重启后不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:44 25 4
gpt4 key购买 nike

我正在尝试使用作业调度程序执行周期性任务。我想每 10 秒调用一次服务,它可以正常工作几个小时,但有时它会停止工作,并且在设备重启后无法工作。

这是我尝试过的

ComponentName getAlertJobComponent = new ComponentName(context.getPackageName(), GetAlertJobService.class.getName());
JobInfo.Builder getAlertbuilder = new JobInfo.Builder(Constants.getAlertJobid, getAlertJobComponent);
getAlertbuilder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); // require unmetered network
getAlertbuilder.setRequiresDeviceIdle(true); // device should be idle
getAlertbuilder.setPeriodic(10 * 1000);
getAlertbuilder.setRequiresCharging(false); // we don't care if the device is charging or not
JobScheduler getAlertjobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
getAlertjobScheduler.schedule(getAlertbuilder.build());

我的工作是

public class GetAlertJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {

if (!Utility.isServiceRunning(GetAlertService.class, getApplicationContext())) {
startService(new Intent(getApplicationContext(), GetAlertService.class));
}
jobFinished(params, false);
return true;
}

@Override
public boolean onStopJob(JobParameters params) {
return true;
}
}

GetAlertService 是调用网络服务的服务

编辑

我还在引导接收器上添加了这个,如下所示

 public class Boot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
ComponentName getAlertJobComponent = new ComponentName(context.getPackageName(), GetAlertJobService.class.getName());
JobInfo.Builder getAlertbuilder = new JobInfo.Builder(Constants.getAlertJobid, getAlertJobComponent);
getAlertbuilder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); // require unmetered network
getAlertbuilder.setRequiresDeviceIdle(true); // device should be idle
getAlertbuilder.setPeriodic(10 * 1000);
getAlertbuilder.setPersisted(true);
getAlertbuilder.setRequiresCharging(false); // we don't care if the device is charging or not
JobScheduler getAlertjobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
getAlertjobScheduler.schedule(getAlertbuilder.build());
}
}
}

在 list 中

<receiver
android:name=".broadcastreceiver.Boot"
android:enabled="true">

<intent-filter android:priority="999">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

最佳答案

通过在作业生成器上添加 setPersisted(true) 解决重置问题。对于长时间后停止工作 - 设备是否处于 sleep 状态?如果是这样,则可能是打瞌睡的问题。

关于Android 作业调度程序周期性任务在一段时间后或设备重启后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com