Miałem tak wiele problemów z układem wielu działań, że zdecydowanie odradzam, chyba że jest dobry powód, aby go wybrać.
Wada wielu działań
Korzystając z wielu działań, bardzo trudno jest refaktoryzować kod w celu zwrócenia danych z działania.
Jeśli nazwiesz działanie podrzędne, działanie główne może zostać zakończone. Ale nigdy nie doświadczysz tego podczas debugowania na przyzwoitym urządzeniu, dlatego musisz zawsze radzić sobie z zapisywaniem i poprawnym odzyskiwaniem stanu. To jest ból. Wyobraź sobie wywołanie metody z biblioteki (tj. Innej czynności) i musisz mieć pewność, że gdy ta metoda zwróci, Twoja aplikacja musi być w stanie całkowicie odtworzyć swój stan ze wszystkimi polami we wszystkich obiektach maszyny wirtualnej (tj. Aktywność. restoreIntance). To niesamowite.
Również w drugą stronę, gdy otwierasz podaktywność, maszyna wirtualna mogła zostać zabita od momentu pierwszego pojawienia się podaktywności, na przykład gdy aplikacja jest zminimalizowana, gdy wyświetlana jest podaktywność.
Jest o wiele czystsze mieć tylko jedno miejsce do przechowywania odpowiedniego stanu aplikacji, aw moim przypadku najczęściej, jeśli maszyna wirtualna zostanie zabita, chcę przywrócić użytkownika do głównego ekranu i pozwolić mu ponownie zrobić swoje, ponieważ nie robię nie spędzają 30-50 godzin na kodowaniu funkcji zapisywania / wznawiania, z której kiedykolwiek skorzysta 0,1% użytkowników.
Alternatywny
Fragmenty lub po prostu sam zarządzaj widokami aktywności. Ręczne zarządzanie widokami wymaga w razie potrzeby kodowania alternatywnych przełączników widoków dla działań / fragmentów z przejściami.
I nie, nie oznacza to jednej mega aktywności, jak sugeruje przyjęta odpowiedź, w żaden inny sposób niż jej jedna mega-aplikacja. Wymaga to po prostu nieco więcej zaprojektowania bazy kodu w pasujące elementy, ponieważ jest nieco więcej pracy przy zarządzaniu widokami, chociaż znacznie mniej pracy na zarządzaniu stanem aktywności i innymi dziwactwami.
Prawdopodobnie istotne: Reddit: To oficjalne: Google oficjalnie zaleca architekturę aplikacji z pojedynczą aktywnością