我们可以通过打开并查看Activities
和Fragments
来检查它们是否正常工作。但是,由于WorkManager
使用的时间不精确,并且更像是后台服务,因此此处不能使用相同的方法。如何验证WorkManager
是否运行以及我打算做什么?
答案 0 :(得分:2)
您可以使用以下方法启动workManager类,并可以保留其实例。
public static OneTimeWorkRequest getInstance() {
if (workRequest == null) {
workRequest = new OneTimeWorkRequest.Builder(YourClass.class)
.addTag("your_tag")
.build();
}
return workRequest;
}
您可以使用getStatusById
和getStatusesByTag
观察工人
WorkManager.getInstance().getStatusById(getInstance().getId()).observe(this, new Observer<WorkStatus>() {
@Override
public void onChanged(@Nullable WorkStatus workStatus) {
if (workStatus != null) {
Log.e("mylog", "onOptionsItemSelected: " + workStatus.getId() + " -> " + workStatus.getState());
}
}
});
WorkManager.getInstance().getStatusesByTag("your_tag").observe(this, new Observer<List<WorkStatus>>() {
@Override
public void onChanged(@Nullable List<WorkStatus> workStatuses) {
if (workStatuses != null && !workStatuses.isEmpty()) {
for (WorkStatus status : workStatuses) {
Log.d("mylog", "onOptionsItemSelected: "+ status.getId() + " -> " + status.getState());
}
}
}
});
答案 1 :(得分:0)
您还可以使用WorkManager测试工件。您无需测试WorkManager
。您应该测试Worker
之间的交互。
答案 2 :(得分:0)
您可以观察和监视工作经理的状态。工作经理可以是六个不同的states之一。 根据官方文档here, 您使用以下代码
$Servers
对于Kotlin,
WorkManager.getInstance(myContext).getWorkInfoByIdLiveData(uploadWorkRequest.getId())
.observe(lifecycleOwner, new Observer<WorkInfo>() {
@Override
public void onChanged(@Nullable WorkInfo workInfo) {
if (workInfo != null && workInfo.state == WorkInfo.State.SUCCEEDED) {
displayMessage("Work finished!")
}
}
});