2016-04-27 2 views
3

Я использую класс, который расширился Loader. Как я могу остановить загрузчик после получения результата?Как правильно остановить погрузчик?

Когда я поворачиваю телефон я результат снова получить:

@Override 
public void onLoadFinished(Loader<Data> loader, Data data) { 
     makeWorkWithData(); 
     //... finish this loader? (or delete result) 
} 
+0

Где вы начинаете загрузчик? – David

+0

@ Давид в onCreateView на моем фрагменте – Artem

+0

Хорошо, что я сделал, но это не лучшее решение, я думаю, что в onLoadFinished я присваиваю результат объекту внутри моей активности/фрагмента ... затем в onCreate/onCreateView я проверяю для resultData. Если это null, я запускаю свой загрузчик, иначе я оставлю его как есть. Но вы должны сохранить результат в onSaveInstanceState и сохранить его в onCreate ... – David

ответ

5

Используйте это:

@Override 
public void onLoadFinished(Loader<Data> loader, Data data) { 
     makeWorkWithData(); 
     stopLoader(id); 
} 

void stopLoader(int id) { 
    getLoaderManager().destroyLoader(id); 
} 

И когда нужно сделать запрос снова позвонить getLoaderManager().restartLoader()...

+0

Как-то мои загрузчики по-прежнему вызывается, когда набор данных изменяется, даже после того, как я вызвал 'getLoaderManager(). DestroyLoader (id);'. Интересно, почему это происходит. – Mauker

1

Я ушел неудовлетворенным с андроидов Погрузчики API в качестве поворота заставит Loaders перезапустить работу, которую они делают. Вот почему я использую и создаю библиотеку Android Retainable Tasks. Он легкий и основанный на Android AsyncTask API, но с автоматической обработкой вращения. Вы можете проверить его и использовать вместо Loaders.

https://github.com/NeoTech-Software/Android-Retainable-Tasks

Отказ от ответственности: Я автор Android Задачи могущей быть удержанной.

+0

Я не знаю, почему ваши загрузчики перезагрузились, когда вы вращаете устройство. Мой загрузчик не перезагружается, но если мой загрузчик уже получает данные из сети - он возвращает мне эти данные всегда, когда я вращаю устройство. – Artem

+0

Некоторые из них, в зависимости от их состояния (кэшируются, работают, закончены). См. Например: http://stackoverflow.com/a/30778505/1052697 –

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