Страницы

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

вторник, 25 июня 2019 г.

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

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


Ответ

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

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

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