Zakładając, co zostało powiedziane, here, deweloper jest odpowiedzialny za utrzymanie instancji składnika w celu implementacji własnej logiki zasięgu (ponieważ metoda o określonym zakresie zwróci tę samą instancję dla danego komponentu).Obsługa elementu sztyletu przy zmianie orientacji
Jaki jest czysty sposób na zachowanie odniesienia do tego komponentu podczas cyklu życia aktywności?
Przykład: Wdrażasz wzorzec MVP, więc potrzebujesz prezentera w swojej Działalności. Ten Presenter może wykonać operację sieciową, aby pobrać elementy. Kiedy urządzenie się obraca, twoja Aktywność jest niszczona i odtwarzana, ale chcesz utrzymać działanie sieci i po prostu odzyskać prezentację przed rotacją.
Ustalanie zakresu komponentu dostarczającego prezenterowi niestandardowego zakresu PerActivity jest rozwiązaniem, więc należy zachować instancję składnika przez ten obrót, aby uzyskać wstrzyknięcie tego samego wystąpienia prezentera, co pierwsze uruchomienie działania.
Jak możemy sobie z tym poradzić? Myślałem o rodzaju pamięci podręcznej komponentów (takiej jak HashMap?), Która mogłaby być zapewniona przez komponent aplikacji żyjący w klasie Application.
Dostępne opcje: - pamięć podręczna komponentów w aplikacji; - niestandardowa instancja inna niż konfiguracja; - zachowany fragment. – EpicPandaForce
** Osobiście ** Właśnie blokuję wysyłkę zdarzeń przez magistralę zdarzeń, podczas gdy bieżąca aktywność nie jest 'wznawiana'd, i umieszczam stan prezentera w pakiecie, a następnie przywracam jego stan przed wznowieniem zdarzeń. A zatem moi prezenterów nie mają dostępu. – EpicPandaForce
Jak zapisać stan prezentera w pakiecie, jeśli ten stan, na przykład, gdy klient OkHttp pobiera dane? W tym przypadku wydaje się, że pamięć podręczna prezentera jest wymagana. –