Java Android WorkManager-应用程序终止后无法正常工作
我创建了简单的workManager,我希望它在后台每1秒为循环工作50次,所以它将每1秒迭代一次循环并显示日志。首先让我介绍一下我的代码 这是WorkManager类Java Android WorkManager-应用程序终止后无法正常工作,java,android,android-service,alarmmanager,android-workmanager,Java,Android,Android Service,Alarmmanager,Android Workmanager,我创建了简单的workManager,我希望它在后台每1秒为循环工作50次,所以它将每1秒迭代一次循环并显示日志。首先让我介绍一下我的代码 这是WorkManager类 public class WorkerClass extends Worker { private static String TAG = "work_tag"; public WorkerClass(@NonNull Context context, @NonNull WorkerParameters wo
public class WorkerClass extends Worker {
private static String TAG = "work_tag";
public WorkerClass(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
try {
loop();
} catch (InterruptedException e) {
e.printStackTrace();
}
return Result.success();
}
private void loop() throws InterruptedException {
for (int i = 0; i < 50; i++) {
Thread.sleep(1000);
Log.d(TAG, "Working: " + i);
}
}
}
如果有什么问题,请通知我。所以当我启动应用程序时,它会像这样每1秒显示一次日志
D/work_tag: Working: 1
D/work_tag: Working: 2
D/work_tag: Working: 3
D/work_tag: Working: 4
D/work_tag: Working: 5
D/work_tag: Working: 25
D/work_tag: Working: 0
D/work_tag: Working: 26
D/work_tag: Working: 1
D/work_tag: Working: 27
D/work_tag: Working: 2
D/work_tag: Working: 28
D/work_tag: Working: 3
D/work_tag: Working: 29
D/work_tag: Working: 4
好的,是吗?所以,当我关闭应用程序(onDestroy)时,30-35秒后,循环会在后台再次启动。之后,当我打开应用程序时,循环会再次启动,而不会完成上一个循环
例如,在后台循环中,循环重复了25次50次,如果我打开应用程序,日志将如下所示
D/work_tag: Working: 1
D/work_tag: Working: 2
D/work_tag: Working: 3
D/work_tag: Working: 4
D/work_tag: Working: 5
D/work_tag: Working: 25
D/work_tag: Working: 0
D/work_tag: Working: 26
D/work_tag: Working: 1
D/work_tag: Working: 27
D/work_tag: Working: 2
D/work_tag: Working: 28
D/work_tag: Working: 3
D/work_tag: Working: 29
D/work_tag: Working: 4
看到了吗?打开app2后,循环开始异步迭代。
所以第一个问题是如何避免这种情况发生(2个异步循环),第二个问题是为什么在销毁应用程序后,我必须等待30-35秒才能在后台运行循环
我正在安卓6.0中测试这个
在android 4.4中,后台任务根本不进行调度。此时您正在运行两个不同的worker副本-每次活动开始时,您都在排队等待一个新的WorkRequest。如果您只想使用一份副本,请使用唯一的工作请求:是的,谢谢,这很有效。但还有一个问题。为什么后台服务在应用程序终止后30-40秒后启动,而不是立即启动?为什么android 4.4中的后台服务根本没有启动?但当我重新启动手机时,任务开始执行。后台工作由操作系统进行备份。至于4.4问题,我认为我们需要更多的细节。请针对官方发行跟踪程序提交错误: