Pytanie Jaki jest zakres LoaderManager?


Tworząc aplikację Android za pomocą programu ładującego, każda aktywność i fragment powinny mieć swoje własne LoaderManager? A może powinien być tylko jeden LoaderManager że aplikacja jest właścicielem? I wreszcie, są to "unikalne identyfikatory", które są używane do identyfikacji konkretnych LoaderManagers widoczne poza klasą?

W szczególności mam problem z podjęciem decyzji, które klasy w mojej aplikacji powinny zaimplementować LoaderCallback<Cursor> metody (tj. czy każdy fragment implementuje te wywołania zwrotne, czy powinienem mieć jeden fragment implementować wywołania zwrotne i wysyłać zapytania o wyniki, przesyłając je do innych fragmentów / działań, jeśli to konieczne)?

Z góry dziękuję wszystkim, którzy mogą mi pomóc! Nie mogłem znaleźć zbyt wielu informacji na ten temat w Internecie.


16
2017-12-25 17:36


pochodzenie


Świetne pytanie, dzięki za informacje! - user1422551
Zgadzam się ... dziękuję bardzo! - user1422551


Odpowiedzi:


LoaderMangersą zarządzane i są własnością tego działania. Możesz tworzyć rzeczywiste ładowarki w swoich fragmentach lub aktywności, zostaną one zamienione przez to samo LoaderManager. Unikalne identyfikatory służą do identyfikacji różnych ładowarek, które możesz mieć w tej samej działalności. Na przykład ID = 0 -> FooLoader, ID = 1 -> BarLoader itp.


13
2017-12-26 02:31



Dzięki za pomoc, Nikolay! - Alex Lockwood
Hej Nikolay, nie jestem pewien, czy kiedykolwiek to zobaczysz ... ale jedno pytanie. Gdyby Fragments są przeznaczone do ponownego użycia (np. nie chcesz zaprojektować) Fragment dla jednego konkretnego rodzica Activity), czy to oznacza, że ​​nie chcesz mieć konkretnego? Activity odpowiedzialny za zarządzanie Loader w Fragment? Czy to lepsza praktyka do zarządzania Loaders w Fragment więc mogą być dołączone do wielu Activitys podczas cyklu życia aplikacji? - Alex Lockwood
The Activity nie przejmuje się faktycznymi ładowarkami, tylko upewnia się, że zostały poprawnie utworzone, zainicjalizowane itp. Powinieneś zaimplementować LoaderCallback<?>jest w miejscu, w którym faktycznie korzystasz z danych. Najprawdopodobniej twój Fragment klasy. - Nikolay Elenkov
Naprawdę nie możesz zmienić LoaderManager, tylko ładowarki. Możesz ponownie użyć ładowarek, jeśli uniezależnisz je od określonego fragmentu / działania. Nie powinieneś przypisywać rzeczy do kontekstu aplikacji, ponieważ oznacza to, że nigdy nie będzie GC-ed (tak długo, jak twój proces jest żywy). - Nikolay Elenkov
nie znaczy, że powinieneś mieć globalnego menedżera identyfikatorów do przechowywania wszystkich ładowarek, ponieważ wiele instancji fragmentów może być używanych w wielu / pojedynczych działaniach? - android developer