Mam działanie, które wywołuje funkcję initLoader po jej utworzeniu w celu załadowania danych wyświetlanych w działaniu. Normalnie działa to dobrze. Mam punkty przerwania, aby zobaczyć kolejność, w której wszystko się dzieje. Najpierw wywołuje funkcję initLoader, a następnie wywołania zwrotnego OnCreateLoader, a następnie wywołania zwrotnego OnLoadFinished, a następnie wszystko jest świetne.Czasami nie można uzyskać połączenia zwrotnegoCreateLoader po wywołaniu funkcji initLoader
Zauważyłem jednak, że jeśli zmieniłem orientację na moim systemie Android, to nie otrzymam oddzwaniania OnCreateLoader lub wywołania zwrotnego OnLoadFinished, co spowoduje brak danych wyświetlanych na stronie. Nadal dostaję mój breakpoint na wywołanie initLoader, więc wiem, że to się dzieje, ale nie dostaję błędu i nie mogę znaleźć żadnej dokumentacji wyjaśniającej, dlaczego nie otrzymam wywołania zwrotnego po wywołaniu initLoader.
Co ciekawe, otrzymuję wywołania zwrotne, jeśli powrócę do oryginalnej orientacji.
Tak więc, aby podsumować:
rozpocząć działalność w orientacji pionowej
- Wzywam initLoader
- dostaję onCreateLoader i onLoadFinished callbacków
I następnie zmiana krajobrazu
- Wzywam initLoader
- nie onCreateLoader lub onLoadFinished callbacks
zmienić z powrotem do portretu
- Wzywam initLoader
- uzyskać onCreateLoader i onLoadFinished callbacków
Podobnie, jeśli uruchomię aktywność w trybie poziomym, otrzymam wywołania zwrotne. Potem, jeśli przejdę do portretu, nie. Następnie, jeśli przełączę się z powrotem w krajobraz, otrzymuję ponownie wywołania zwrotne.
Czy ktoś ma pojęcie, co się dzieje?
ten sposób jego ment do pracy. Jeśli wywołanie init w programie ładującym, który już załadował swoje dane, po prostu zwróci te dane przez onLoadFinished. Powinieneś spojrzeć na http://developer.android.com/reference/android/app/LoaderManager.html#restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks), aby przeładować dane. –
Dori