通过使用evernote的安卓-作业,我试图安排一个周期作业,每15分钟运行一次。问题是作业运行2-3次,而不是每15分钟运行一次。基本上在8小时内,当设备处于空闲状态时,它运行了近10-11次。我是不是做错了什么。我的工作唯一的要求就是网络应该是连接的。
安卓--作业库会运行吗?这是我的工作代码
public class TestNetworkJob extends Job {
public static final String TAG = "TestNetworkJob";
@NonNull
@Override
protected Result onRunJob(Params params) {
Timber.i("onRunJob");
RetrofitUtils.getInstance().postSlack("TestCall: " + DateTimeUtils.getLocalizedDateTimeString(System
.currentTimeMillis()));
return Result.SUCCESS;
}
public static JobRequest buildJobRequest() {
return new JobRequest.Builder(TAG)
.setUpdateCurrent(true)
.setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
.setPeriodic(TimeUnit.MINUTES.toMillis(15))
.build();
}
}发布于 2017-11-18 23:36:49
基本上在8小时内,当设备处于空闲状态时,它几乎运行了10-11次。
这听起来像是标准的Doze模式行为,你会在Android 6.0+设备上遇到这种行为。
我认为这就是使用作业调度程序APIs的全部意义。
哦,$DEITY,不。使用JobScheduler (或包装器)的要点是对电池友好。
那么,我们如何确保每15分钟运行一次作业?
一般来说,你不知道。
Google希望您停止轮询,切换到Firebase消息传递,用于服务器端推送消息。欢迎您在setAndAllowWhileIdle()/setExactAndAllowWhileIdle()上进行AlarmManager实验。但是,总的来说,对背景的战争处理意味着做周期性的背景工作充其量是困难的。
https://stackoverflow.com/questions/47372131
复制相似问题