Изменение вкладок медленное / медленное - Использование фрагментов

У меня есть активность, которая использует вкладки, а вкладки переключают фрагменты. Проблема в том, что при создании фрагмента загрузка занимает несколько секунд, поэтому переключение между вкладками имеет задержку около 1 или 2 секунд. Чтобы исправить это, я пытался найти способ отобразить простую графику загрузки или даже диалог прогресса, чтобы вкладка мгновенно менялась и отображала что-то, указывающее, что что-то загружается, пока все не завершится.

мой onCreateView Метод фрагмента выглядит так:

FrameLayout fl;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    fl = (FrameLayout) inflater.inflate(R.layout.text_layout, container, false);

    doHeavyStuff();

    return fl;
 }

Я пытался положить doHeavyStuff() в onStart() но это ничего не помогло. И поток не поможет, потому что doHeavyStuff() включает в себя манипулирование представлениями /GUI.

Любые идеи о том, как я могу отобразить фрагмент и отображать информацию "Загрузка", в то время как все остальное загружается?

Спасибо!

Мэтт.

2 ответа

Решение

в onActivityCreated() :

  • Начать progress bar (или любой прогресс, показывающий элемент (ы) пользовательского интерфейса).
  • Выполнить HeavyStuffDoingAsyncTask что объясняется ниже.

HeavyStuffDoingAsyncTask должен иметь:

  • doHeayStuff() логика, которая не обновляет пользовательский интерфейс в doInBackground метод.
  • вызов publishProgress() от doInBackground() каждый раз, когда вы хотите обновить пользовательский интерфейс.
  • Реализуйте логику обновления пользовательского интерфейса в onProgressUpdate метод.
  • Остановить индикатор выполнения в onPostExecute метод.

Удачи.

Попытаться установить

pager.setOffscreenPageLimit(no_of_fragments or pages);
Другие вопросы по тегам