0

Мой AsyncTask для получения данных длинный, и в то же время, в разгар построения моего recyclerview, я хотел проверить, удалось ли cursorloader запросить у моего контент-провайдера правильно.AsyncTask и CursorLoader [Android]

Медведь со мной здесь, я использовал обратные вызовы погрузчика interface и onLoadFinished для получения результатов. Поскольку asynctask все еще запущен, загрузчик по-прежнему вызывает поставщика контента по мере его обновления до конца asynctask. Я хотел бы исключить, что с onLoadFinished в основном занимается заполнением содержимого adapter данными курсора, что я не должен беспокоиться о том, что он печатает отчеты журнала одновременно, поскольку asynctask продолжает работать, но я хотел подтвердить.

Я намерен в конце концов переместить этот asynctask в intentservice, который вызывается только через broadcast.

+0

Я, честно говоря, не понимаю, чего вы хотите. Вы хотите получить результаты позже? –

+0

Также, пожалуйста, добавьте код, который вы попробовали. Я не могу помочь. Если я почти не понимаю вопрос и два, если я не вижу ничего, что можно было бы попробовать. –

+0

извинения, я написал вопрос в спешке, прежде чем отправиться спать, думая об этом сам. У меня есть код, но длинный рассказ короткий, asynctask работает и вставляет в мой контент-провайдер, в то время как загрузчик курсора продолжает обновляться по мере поступления новых данных до тех пор, пока не будет выполнена асинхронизация. Поскольку это произойдет только при первой загрузке программы, это в конечном итоге повлияет на мой пользовательский интерфейс и просмотр ресайклеров при загрузке вниз, пока я его реализую. – kthieu

ответ

0

Вы можете позвонить getLoaderManager().restartLoader(URL_LOADER, null, HomeFragment.this);, чтобы перезагрузить загрузчик на вас. AsyncTask onPostExecute. Вам нужно сначала запустить Loader на вас onCreate().

Таким образом, загрузчик будет обновляться с той же проекцией, что и при его запуске, и будет извлекать результаты операций AsyncTask из БД.

+0

Похоже на правильный подход, но мне может потребоваться найти способ вызвать LoaderManager из моей асинтезы, которая находится в отдельном файле. вы сделали хорошее предположение, не указав мне код, что мой фрагмент реализует методы обратного вызова для загрузки. Я сделал сообщение как секунды, прежде чем я заснул, чтобы подумать об этом. – kthieu

+0

@kthieu вы можете использовать EventBus, Otto или любую другую ориентированную на события библиотеку для этой пурпус. – axierjhtjz

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