Что-то не так с получением обратного вызова от AsyncTask таким образом? - PullRequest
0 голосов
/ 14 июня 2019

Я собираюсь закончить несколькими классами, каждый из которых выполняет разные AsyncTask и один класс ' manager ', который будет отвечать за запуск этих задач и обработку результата.

Есть ли проблемы с использованием интерфейса для обеспечения обратного вызова одного и того же объекта из нескольких экземпляров AsyncTask таким образом?

Типичный пример класса задачи:

import android.os.AsyncTask;

public class SomeBackgroundAction extends AsyncTask<SomeObject, Void, Boolean> {

    public interface SomeBackgroundActionDelegate {
        void result(Boolean result);
    }

    private SomeBackgroundActionDelegate delegate;

    public SomeBackgroundAction(SomeBackgroundActionDelegate delegate) {
        this.delegate = delegate;
    }

    @Override
    protected Boolean doInBackground(SomeObject... theseThings) {
        // some more code
        return theseThings[0].doThingThatReturnsBoolean();
    }

    @Override
    protected void onPostExecute(Boolean aBoolean) {
        super.onPostExecute(aBoolean);
        if (delegate != null) {
            delegate.result(aBoolean);
        }
    }
}

и запуск задач как таковой:

new SomeBackgroundAction((r) -> {
            if (r) {
                // do good
            } else {
                // do bad :(
            }

        }).execute(someObject);

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

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