0

Это мой первый вопрос. Поэтому, пожалуйста, простите меня, если мой вопрос - фиктивный квест.Производительность для Android ViewPager и FragmentPagerAdapter с 3 веб-фрагментами

Я ищу несколько вопросов и ответ link, и я думаю, что для меня нет 100% -ного соответствия.

Я пытаюсь создать приложение для Android. Он содержит 4 фрагмента в одном действии с ViewPager. И использование FragmentPagerAdapter для просмотра салфетки.

Три из этих фрагментов должны извлекать и синхронизировать данные из Интернета.

FragmentPagerAdapter - предварительная загрузка для следующего прокрутки (следующий фрагмент), когда начинается моя активность. (Это моя проблема). Первый фрагмент - WebView. А второй фрагмент должен извлекать много данных из веб-службы или локальной БД (если в локальной базе данных нет данных, необходимо извлечь из Интернета), то показать с помощью ListView, а также третий. Четвертая потребность в получении небольших данных.

Когда начинается основная активность, два фрагмента загружают данные из Интернета. Сначала выберите WebView и второй выберите AsyncTask. Поэтому для выполнения этих задач слишком много времени. (Моя скорость интернета составляет около 100 Кбит/с). Второй фрагмент должен сделать две вещи; первая - выборка из сети и сохранение в локальную БД, вторая - загрузка данных из локальной БД для отображения пользователя со списком. ** Я думаю, что это плохая производительность для пользователя.

Я хочу загрузить или синхронизировать данные, когда пользователь прокручивает каждый фрагмент. В настоящее время я использовал метод ViewerPager> onPageSelected для обновления фрагмента. Но он создает новый экземпляр и дал мне ошибку. Как обновить локальную БД и показать ListView при выборе пользователя?

Любое решение для этого?

Я не закончил общие коды. Я тестировал некоторые виртуальные данные для второго фрагмента, заставляя меня медленно. И я осмелюсь пойти на мой проект. Думаю, мне нужно перепроектировать! Я понятия не имею.

ответ

1

Во-первых, используйте FragmentStatePagerAdapter. Затем не загружайте и не обновляйте второй фрагмент (тот, который имеет просмотр списка, загружающий локальную или онлайн-базу данных) в onCreate или onResume. Используйте otto (это система автобусов с событиями) и сделайте вот так. в основной вид деятельности пейджера onPageChangeListener

public void onPageSelected (int position){ 
    bus.post(new LoadingEvent());} // 

и в вашем Второй фрагмент

@Subscribe public void loadData(LoadingEvent event) { 
// TODO: Load Data from local DB or online 

}

ли как то на третьем фрагменте или четвёртое, если вам нужно Checkout страницы, эфирное масло для более Применение.

+0

Найдите минутку, чтобы прочитать [помощь по редактированию] (http://stackoverflow.com/editing-help) в Справочном центре. Форматирование переполнения стека отличается от других сайтов. – gunr2171

+0

thz за советом –

Смежные вопросы