Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Перезапускается loadInBAckground в Loader, при повороте экрана

#java #android #android_loader

                    
У меня есть Loader, создаю и вызываю его так:

mLoadData = getSupportLoaderManager().initLoader(LOADER_ID, bundle, this);
mLoadData.onContentChanged();


При первом запуске все хорошо: запускается конструктор, onStart, doInBackground и,
в конце, я получаю данные в активность. Но когда я поворачиваю экран — перезапускается
loadInBackground, а потом вызывается два раза метод onLoadFinished в активности (она
слушатель). Как сделать так, чтобы, при повороте экрана, я получил или ссылку на Loader,
который уже существует, или получил данные, через метод onLoadFinished (можно эквивалентный),
которые были загружены ранее, без перезапуска loadInBackground?
    


Ответы

Ответ 1



Согласно en-SO, докам и здравому смыслу onContentChanged() говорит лоадеру, что данные изменились и их надо заново загрузить. Т.е. вам надо запускать лоадер методом его запуска (sic!) forceLoad() вместо того, что используете вы. В этом случае лоадер не перезапустится после поворота экрана и будет каждый раз выдавать только уже загруженные данные, если они есть.

Комментариев нет:

Отправить комментарий