我正在尝试使用evernote的android-job安排定期工作每隔15分钟运行一次。 工作运行2-3次,然后每15分钟不运行一次。基本上在8小时的时间内,当设备闲置时,它几乎运行了10-11次。有什么我做错了。我的工作唯一的要求是连接网络应该连接。
android-job库是否有点保证该作业会运行?这是我的工作代码
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();
}
}
答案 0 :(得分:1)
基本上,在8小时的时间内,当设备闲置时它几乎运行了10-11次
这听起来像是标准的打盹模式行为,您将在Android 6.0+设备上遇到这种行为。
我认为这是使用作业调度程序API的重点
哦,$DEITY
,不。使用JobScheduler
(或围绕它的包装)背后的观点是对电池友好。
那么我们怎样才能确保每15分钟就有一份工作?
一般情况下,你没有。
Google希望您停止投票并切换到Firebase Cloud Messaging,以获取服务器端推送消息。欢迎您在setAndAllowWhileIdle()
上体验setExactAndAllowWhileIdle()
/ AlarmManager
。但是,总的来说,背景处理战争意味着定期进行背景工作是最困难的。