Могу ли я передать различные типы параметров в AsyncTask в Android? - PullRequest
23 голосов
/ 13 октября 2010

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

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

Ответы [ 2 ]

49 голосов
/ 31 января 2012

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

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;
    }
}
23 голосов
/ 13 октября 2010

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

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

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