Лучше ли использовать несколько рабочих, которые выполняют одну и ту же задачу для входных данных, или один рабочий, который выполняет задачу несколько раз для входных данных? - PullRequest
1 голос
/ 18 апреля 2019

Лучше ли использовать несколько рабочих, которые выполняют одну и ту же задачу для входных данных, или один рабочий, который выполняет задачу несколько раз для входных данных?

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

против

Несколько рабочих, которые выполняют одно задание независимо:

\\\ 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 Ответ

2 голосов
/ 18 апреля 2019

Это зависит.

Я бы сказал, используйте один Worker, если только вы не знаете, что можете запустить через 10 минутное окно выполнения или если вы знаете, что есть части Worker, которые полезнынезависимо (т. е. может использоваться повторно из других частей приложения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...