使用多个执行相同任务的工作人员进行输入还是使用多次执行任务的工作人员进行输入更好?

时间:2019-04-18 02:12:51

标签: android android-workmanager

使用多个执行相同任务的工作人员或输入多次执行任务的工人更好吗?

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();

第一种方法似乎会消耗更少的内存,但是会花费更长的时间,而第二种方法会由于工作经理更多而消耗更多的内存,但是会花费更短的时间。

1 个答案:

答案 0 :(得分:2)

要视情况而定。

我会说使用一个Worker,除非您知道您可能会在10分钟的执行窗口中运行,或者您知道Worker的某些部分是独立有用的(即可从应用程序的其他部分重复使用。