Jeśli używasz niestandardowego AsyncTaskLoader
do pobierania danych z usługi internetowej, jeśli naciśniesz przycisk HOME w połowie procesu ładowania, a następnie ponownie wejdziesz do aplikacji, onLoadFinished () metoda nie jest wywoływana. Mój fragment wywołuje setRetainInstance(true)
w onActivityCreated()
i również wywołuje getLoaderManager.initLoader(0, null, this)
w tej samej metodzie (co jest zalecane).onLoadFinished nie jest wywoływane po powrocie z przycisku HOME naciśnij
Podczas testowania widzę, że po powrocie do fragmentu onActivityCreated()
nie jest wywoływany, więc może być powodem, dla którego onLoadFinished()
nie jest wywoływany. Ale gdzie jeszcze umieścić metodę initLoader()
? W kilku miejscach przeczytałem, że nie powinno się go wywoływać w onResume()
.
Jakieś pomysły? Mam wiele programów ładujących na różnych ekranach w mojej aplikacji i muszę rozwiązać ten problem w elegancki sposób.
Gdzie można przeczytać, że 'initloader' nie powinien być nazywany w 'onResume()', ponieważ jest to dokładnie to, co jest wymagane, aby obejść błąd struktury https://code.google.com/p/android/issues/detail?id=63179 – faizal
@faizal Naprawdę nie pamiętam. Od dawna odchodzę od używania ładowarek. Wielu doświadczonych programistów zaleca odradzanie używania ładowarek do pobierania danych sieciowych. –