2013-10-23 13 views
10

Chciałbym wiedzieć, czy to dobry pomysł na wdrożenie we wszystkich działaniach onBackPressed() funkcji finish()? Czy to nie jest praktyczne, a nawet nie jest dobre?Wykończenie Android OnBackPressed()?

Jeśli nie, to jakie inne opcje poza zamanifestowaniem i wprowadzeniem SingleInstance (co moim zdaniem sprawia, że ​​aplikacja jest wolniejsza) w każdym działaniu, czy mam?

Dzięki.

+1

'onBackPressed()' automatycznie kończy działanie, dopóki go nie zastąpimy. – SilentKiller

+0

SilentKiller ma rację, [tylny stos działa jako "ostatni na pierwszym miejscu"] (http://developer.android.com/guide/components/tasks-and-back-stack.html) – AlexBcn

+0

@SilentKiller, didn Nie wiem tego. Doceniam to. – user2902515

Odpowiedz

10

Przede wszystkim sam przycisk Wróć sprzętowo wywołuje metodę finish(). Jeśli definiujesz metodę onBackPressed() w swojej aktywności, oznacza to, że nadpisujesz domyślne zachowanie metody backButton, gdy metoda onBackPressed() zostanie wywołana po naciśnięciu przycisku Wstecz.

Od tego, czy utworzyć pojedynczą instancję czynności, zależy od wymagań użytkownika, np. ekran powitalny może być utworzony z pojedynczej instancji, ponieważ będzie widoczny tylko raz podczas uruchamiania aplikacji i nie będzie potrzeby utrzymywania tej aktywności w tylnym stosie. Aktywność, której będziesz używać bardzo często, nie powinna być pojedynczą instancją, w przeciwnym razie rzadką czynnością może być pojedyncza instancja.

Przejdź przez stronę Back Stack Documentation, aby uzyskać pełne informacje.

Standard i "singleTop" mogą tworzyć instancje wielu działań, a instancja pozostanie w tym samym zadaniu. W przypadku "pojedynczej czynności" lub "pojedynczej instancji" klasa aktywności używa wzorca singleton, a ta instancja będzie podstawową działalnością nowego zadania.

+0

Niektórzy używają flag podczas otwierania Intents. To świetny sposób na zrobienie tego? Jeśli tak, to która z flag powinna dostosować się do moich potrzeb? Nie chcę otwierać wielu działań i często widzę, że pozostają one w tle. Oszczędzanie pamięci: \ – user2902515

+1

Całkowicie zależy od twoich wymagań. Domyślnie działania pozostają w tylnym stosie, chyba że ręcznie usuniesz je za pomocą flagi lub procesora, zabijając je z tylnego stosu. –

+0

Próbuję uzyskać odpowiednią flagę w dokumentacji, ale nie mogę się dowiedzieć. Chcę tylko flagę, która usuwa aktywność, jeśli jest już otwarta. Wszystko, co widzę, to flaga, która wyczyści wszystkie czynności podczas otwierania nowego. – user2902515

0

Zależy to od wymagań aplikacji, ponieważ często używamy wykończenia() , ale możesz także zarządzać cyklem życia Androida.

lepiej użyć metody pauzy i wznowienia.

Powiązane problemy