Подтвердить что ты не робот

Могу ли я передавать различные типы параметров AsyncTask в Android?

Я хочу реализовать универсальный класс сохранения потоков, который берет RessourceId ImageView и Url (http), где хранится нужный файл изображения. Он загрузит изображение и заполнит src ImageView в UiThread.

Я думал, что AsyncTask будет для меня лучшей. Однако я заметил, что я могу передать только один тип параметров методу doInBackground(). Как массив адресов. Это правда? Что бы вы посоветовали мне?

4b9b3361

Ответ 1

Вы можете добавить методы setter к вашей реализации AsyncTask или даже определить свой собственный конструктор для передачи дополнительных параметров.

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

Ответ 2

Вы можете передавать параметры как объекты

new MyTask().execute(url, str, context);

public class MyTask extends AsyncTask<Object, Void, Void> {
    @Override
    protected Void doInBackground(Object... params) {
            Url url = (Url) params[0];
            String str = (String) params[1];
            Context ctx = (Context) params[2];

            return null;
    }
}