Изменение вкладок медленное / медленное - Использование фрагментов
У меня есть активность, которая использует вкладки, а вкладки переключают фрагменты. Проблема в том, что при создании фрагмента загрузка занимает несколько секунд, поэтому переключение между вкладками имеет задержку около 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);