使用多个执行相同任务的工作人员或输入多次执行任务的工人更好吗?
1名工人:
\\\ SomeWorker.class
@NonNull
@Override
public Worker.Result doWork() {
Context applicationContext = getApplicationContext();
boolean success = Boolean.TRUE;
List<String> resourceUris = new ArrayList<String>(has a list of strings);
for (String resourceUri : resourceUris) {
success = doSomething(resourceUri);
}
return success ? Result.success() : Result.retry();
}
\\\ Viewmodel.class
OneTimeWorkRequest save = new OneTimeWorkRequest.Builder(SomeWorker.class)
.addTag(TAG_OUTPUT)
.build();
workManager.beginUniqueWork(save).enqueue();
VS
多名工人独立完成一项任务:
\\\ Someworker.class
@NonNull
@Override
public Worker.Result doWork() {
Context applicationContext = getApplicationContext();
String resourceUri = getInputData().getString("RESOURCE_URI");
return doSomething(resourceUri) ? Result.success() : Result.retry();
}
\\\ Viewmodel.class
List<String> resourceUris = new ArrayList<String>(has a list of strings);
List<OneTimeWorkRequest.Builder> someBuilder;
for (int i = 0; i < resourceUris.size(); i++) {
someBuilder.add( new OneTimeWorkRequest.Builder(Someworker.class));
}
workManager.beginUniqueWork(someBuilder).enqueue();
第一种方法似乎会消耗更少的内存,但是会花费更长的时间,而第二种方法会由于工作经理更多而消耗更多的内存,但是会花费更短的时间。
答案 0 :(得分:2)
要视情况而定。
我会说使用一个Worker
,除非您知道您可能会在10
分钟的执行窗口中运行,或者您知道Worker
的某些部分是独立有用的(即可从应用程序的其他部分重复使用。