0

У меня есть HomeScreenActivity, которая содержит ViewPager и содержит 3 страницы. Теперь я хочу, чтобы загрузить некоторый контент через асинхронную Task, чтобы показать его в Page 1.Эффективность Async Task In Adapter

потока коды:

HomeActivity - где я установил ViewPager адаптер.

HomeViewPagerAdapter

CustomAsyncTask

CustomAsyncTaskInterface - уведомить загрузку контента.

Вызывает AsyncTask от адаптера хороший подход? Или я должен делать это из HomeActivity?

+0

Зависит от того, что вы делаете в AsyncTask –

+0

Я думаю, AsyncTask используется только для загрузки содержимого. –

+0

Конечно, но какой контент? HTML, JSON, изображения, другие медиафайлы? –

ответ

0

Я думаю, что лучшим подходом будет установка адаптера на метод onPostExecute из AsyncTask, потому что там вы узнаете, что AsyncTask завершил выполнение.

1

Если AsyncTask должен создать список данных для адаптера, он должен быть запущен из Activity/Fragment, содержащего адаптер. Вы установите или уведомите адаптер в onPostExecute.

Если AsyncTask загружает данные за единицу адаптера, то это должно быть частью класса адаптера, называемым в getView и обновлении getItem(position) элемента из onPostExecute.


Например, у вас есть список данных, который содержит URL изображения, но адаптер требуется только для отображения названия элемента, не сразу отобразить изображение. Этот первый AsyncTask, чтобы получить список данных для всех элементов, отправляется в Activity

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

+0

Можете ли вы объяснить причину выполнения всего этого внутри деятельности, а не внутри адаптера? –

+0

Не уверен, что вы подразумеваете под «всем этим». Я бы рекомендовал не делать больше сетевых запросов, чем необходимо для отображения данных, которые вы хотите показать в определенное время. –

+1

@adbhi_bond: Адаптеры показывают данные, которые у вас уже есть. Активность собирает данные из потенциально нескольких источников. Речь идет о разделении проблем. – DeeV