使用 Evernote Android-作业库时,定期作业不运行始终如一
Periodic Job not running consistently when using Evernote Android-Job library
我正在尝试使用 evernote 的 android-job 将定期作业安排为每 15 分钟 运行。
问题是工作 运行s 2-3 次,然后不是每 15 分钟 运行。基本上在 8 小时内,它 运行 几乎是设备闲置时的 10-11 倍。我做错了什么吗?我的工作唯一的要求是应该连接已连接的网络。
android-job library 是否有点 gu运行tees that job will 运行?这是我的工作代码
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();
}
}
Basically in span of 8 hours it ran almost 10-11 times when the device was sitting idle
这听起来像是标准的打瞌睡模式行为,您会在 Android 6.0+ 设备上遇到这种行为。
I thought that was the whole point of using job-scheduler APIs
哦,$DEITY
,没有。使用 JobScheduler
(或围绕它的包装纸)背后的要点是对电池友好。
So how can we make sure a job is run every 15 mins?
一般来说,你不会。
Google 希望您停止轮询并切换到 Firebase 云消息传递,以获取服务器端推送消息。欢迎您在 AlarmManager
上试用 setAndAllowWhileIdle()
/setExactAndAllowWhileIdle()
。但是,总的来说,War 后台处理意味着做周期性的后台工作充其量是困难的。
我正在尝试使用 evernote 的 android-job 将定期作业安排为每 15 分钟 运行。 问题是工作 运行s 2-3 次,然后不是每 15 分钟 运行。基本上在 8 小时内,它 运行 几乎是设备闲置时的 10-11 倍。我做错了什么吗?我的工作唯一的要求是应该连接已连接的网络。
android-job library 是否有点 gu运行tees that job will 运行?这是我的工作代码
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();
}
}
Basically in span of 8 hours it ran almost 10-11 times when the device was sitting idle
这听起来像是标准的打瞌睡模式行为,您会在 Android 6.0+ 设备上遇到这种行为。
I thought that was the whole point of using job-scheduler APIs
哦,$DEITY
,没有。使用 JobScheduler
(或围绕它的包装纸)背后的要点是对电池友好。
So how can we make sure a job is run every 15 mins?
一般来说,你不会。
Google 希望您停止轮询并切换到 Firebase 云消息传递,以获取服务器端推送消息。欢迎您在 AlarmManager
上试用 setAndAllowWhileIdle()
/setExactAndAllowWhileIdle()
。但是,总的来说,War 后台处理意味着做周期性的后台工作充其量是困难的。