Это лучший способ реализовать AsyncTask?Или есть лучшие способы? - PullRequest
2 голосов
/ 03 марта 2012

Я пытаюсь написать универсальный пакет AsyncTask. До сих пор я вызывал одно действие из другого и отправлял экземпляр в намерении этому действию. Это действие является частью AsyncTask, которая вызывает файл AsyncLoader.execute (). Я делаю это так, чтобы не потерять данные, которые родительская активность устанавливает в макете.

Другой способ сделать это - вызвать Intent и вернуть данные из AsyncActivity в родительское Activity. Но оба эти метода работают медленнее, чем реализация AsyncTask в родительском действии.

Но это загромождает код. Таким образом, есть ли лучший способ реализовать это?

1 Ответ

3 голосов
/ 03 марта 2012

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

По моему опыту, лучший способ разработки действий, требующихAsyncTask:

  • Не допускайте использования AsyncTask в своей деятельности, то есть создайте отдельный класс, который extends AsyncTask.Это позволяет повторно использовать AsyncTask между несколькими действиями и упростить тестирование.
  • Если вам необходимо вернуть данные обратно в свое действие, используйте слушатель и внедрите слушатель в свое действие.Затем передайте слушателю класс, который создает AsyncTask.

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

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