我有一个用于对媒体进行编码的前台服务,有时需要几个小时才能运行。在此过程中,通过记录进度值,我注意到如果达到此条件,一切都将暂停:
如果(phone not connected to adb
&& screen is locked)
所以我决定尝试this新的WorkManager
。
但是问题仍然存在。我抓起WorkManager
sample project并试图记录一些下面增加的计数值。但是问题仍然存在。我什至尝试使用setRequiresDeviceIdle(true/false)
都没有成功。
在 Honor 8 Lite
上运行 API 24
工人
public class WorkerTest extends Worker {
int a = 0;
public WorkerTest(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@Override
public Result doWork() {
try {
Observable.interval(1, TimeUnit.SECONDS).doOnNext(new Consumer<Long>() {
@Override
public void accept(Long n){
Log.d("WorkerTest:doWork", String.valueOf(a++));
}
}
).subscribe();
return Result.SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Result.FAILURE;
}
}
}
CallerClass
public class Main extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OneTimeWorkRequest blurRequest = new OneTimeWorkRequest.Builder(WorkerTest.class)
.build();
WorkManager.getInstance().enqueue(blurRequest);
}
}