Jaki jest właściwy sposób na zamykanie aplikacji na Androida?

69

Jestem nowy na platformie Android i jest to prawdopodobnie głupie pytanie, ale ...

Jak zamknąć aplikację?

Kiedy jestem w aplikacji i chcę się wydostać, po prostu klikam „Strona główna” i przechodzę dalej, ale właśnie zainstalowałem aplikację Task Manager i zauważyłem, że wszystko pozostało uruchomione.

Czy istnieje sposób na zamknięcie aplikacji? Czy też muszę używać Menedżera zadań za każdym razem, gdy coś wychodzę?

ale
źródło

Odpowiedzi:

48

Jeśli wyjdziesz z aplikacji za pomocą BACKprzycisku, wywoła onDestroy()ona bieżącą Aktywność, Jeśli naciśniesz HOMEtylko wywołania onPause()
Nie martw się zbytnio, Aktywności nie wyczerpują baterii, są tylko w pamięci, więc można je otworzyć szybciej w przyszłości.

Nie polecałbym używania jednej z tych aplikacji do zabijania zadań Android zaprojektowano tak, aby zachowywał to w pamięci z jakiegoś powodu, używanie zabójcy zadań to tylko jedna dodatkowa usługa szarpiąca baterię. To, na co musisz uważać, to aplikacje uruchamiające usługi w tle, takie jak Twitter lub klienci poczty e-mail pobierający serwery, każda dobra aplikacja, która ma taką usługę, będzie mogła ją wyłączyć.

Nathan Schwermann
źródło
1
Zauważyłem kilka aplikacji, które zużywają dużo baterii w tym stanie wstrzymania. Mianowicie najnowsza wersja Google Maps i gra, którą mam na imię GalaxIR. Uważaj więc na złych przestępców i pamiętaj o ich prawidłowym zamknięciu.
keithjgrant
1
mylisz się, jeśli to jedzenie twojego ciasta jest usługą w tle.
Nathan Schwermann
5
Rzeczywiście możliwe jest posiadanie aplikacji, która nie jest dobrze rozwinięta i nie odpowiada cyklowi życia aplikacji na Androida. Na przykład wątek może pozostać aktywny w działaniu, nawet po wstrzymaniu go przez system operacyjny (przez naciśnięcie przycisku Home), w takim przypadku aplikacja będzie nadal korzystać z baterii.
jmbouffard
1
Przekonałem się, że wiele aplikacji nie wyłącza się po naciśnięciu przycisku Wstecz. Na przykład: Pandora, G
Clay Nichols,
1
(mój czas edycji upłynął) .... inne aplikacje, które nie zamykają się na przycisku Wstecz: Pandora (która nawet gra po naciśnięciu Wstecz), Google Play Store, FaceBook, Podkicker. Testuję sposób klikania przycisku Wstecz, aż aplikacja zniknie (zwykle to powoduje powrót do strony głównej), a następnie uruchomienia programu Easy Task Killer.
Clay Nichols
25

Jestem pewien, że wszystko, co kiedykolwiek czytałem, mówi, że Backprzycisk to właściwy sposób na wyjście z aplikacji.

Naciśnięcie powoduje, Homeże działają one w tle, dopóki Android nie zdecyduje, że nie są już potrzebne, co może być przydatne, jeśli potrzebujesz tylko przełączać się między aplikacjami, aby coś sprawdzić (przytrzymanie Home przez kilka sekund daje listę ostatnio uruchomionych aplikacji możesz przełączyć z powrotem na większość telefonów), ale wyjście za pomocą przycisku Wstecz informuje aplikację, że chcesz ją zamknąć.

GAThrawn
źródło
3
Przytrzymując Homeprzycisk, wyświetl listę 6 ostatnio otwartych aplikacji, a nie uruchomioną.
@ Loïc: pokazuje mi 8.
ale
1
@LoicWolff, AlEverett Zależy to od używanego programu uruchamiającego i samej pamięci ROM.
t0mm13b
To nie do końca prawda. Działania nie działają w tle na Androidzie.
Dan Hulme
12

Niektóre aplikacje mają opcję „Wyjdź” w menu. Większość nie.

Naprawdę nie musisz się tym martwić. Możesz po prostu przejść do następnej aplikacji. Android wykonuje całkiem niezłą robotę, uwalniając zasoby w razie potrzeby.

Aktualizacja : AndroidSpin przeprowadził badania w prawdziwym świecie .

ale
źródło
Fajny link, ty :)
Flow
7

Działania nie działają w tle

W Androidzie działania (czyli część aplikacji, którą możesz zobaczyć) nigdy nie działają w tle. Mogą działać (i zużywać energię baterii) tylko wtedy, gdy są na ekranie. Aktywność przestaje działać bez względu na to, czy opuścisz dom, czy z powrotem . Jedyną różnicą jest to, jakie dane Android prosi aplikację o zapisanie, więc żadna z opcji nie jest „właściwa droga”. To zależy tylko od tego, co chcesz zrobić.

Dom

Jeśli korzystasz z domu , Android pozostawia aplikację w tym samym stanie, więc jeśli wrócisz do niej później (np. Poprzez listę ostatnich aplikacji), nadal będzie w tym samym stanie, w którym ją zostawiłeś: na tym samym ekranie, z tymi samymi pokazanymi rzeczami. Na przykład, jeśli jest to aplikacja do obsługi poczty e-mail, a ty patrzyłeś na jeden e-mail, to zapamięta, który to był e-mail, i wyświetli ten sam.

W końcu (po około pół godzinie) Android stwierdza, że ​​nie wracasz do aplikacji, więc resetuje ten stan: przy następnym uruchomieniu aplikacja uruchomi się z ekranu głównego / głównego. Aby kontynuować przykład, aplikacja e-mail zapomni, którego e-maila i folderu oglądałeś, i wyświetli skrzynkę odbiorczą.

Plecy

Jeśli wrócisz , mówisz Androidowi, że nie chcesz wracać do tego widoku. Zniszczy to informacje o tym, na co patrzyłeś od razu. Następnym razem, gdy uruchomisz aplikację, wyświetli się ekran przedni (np. Skrzynka odbiorcza).

Jak powiedzieli inni, aplikacje mogą kontrolować zachowanie przycisku Wstecz : na przykład przeglądarki internetowe używają go do cofania się w historii przeglądarki. To, co opisałem, to domyślne zachowanie przycisku Wstecz, a programiści powinni zachować takie zachowanie, aby uniknąć zamieszania.

Procesy w tle buforowane

Niezależnie od tego, której metody użyjesz, system Android pozostawi aplikację w pamięci (ale nie będzie działać) tak długo, jak to możliwe. Ma to być bardziej wydajne. Gdy wrócisz do aplikacji, jeśli nadal jest w pamięci, Android może od razu uruchomić ją ponownie; jeśli nadal nie ma go w pamięci, Android musi ponownie poświęcić czas i energię na ładowanie aplikacji z pamięci.

W starszych wersjach Androida aplikacje pozostawione w pamięci w tle w ten sposób znajdowały się na liście „uruchomionych aplikacji”. Jest to nieco mylące dla użytkowników - sprawia, że ​​ludzie myślą, że aplikacja nadal działa - dlatego nowsze wersje nazywają te aplikacje „buforowanymi procesami w tle”, aby było jasne, że są one buforowane, a nie uruchomione.

Co z aplikacjami w tle?

Wcześniej powiedziałem, że działania nie działają w tle. Jak więc klient poczty e-mail sprawdza pocztę? Oprócz działań aplikacje mogą mieć usługi . Usługi nie mają graficznego interfejsu użytkownika, z którym można się zapoznać lub z nimi korzystać, ale działają w tle. Zazwyczaj usługa jest uruchamiana rzadko, na przykład w celu sprawdzania poczty raz na godzinę, ale deweloper aplikacji może cały czas uruchamiać usługę, co powoduje wyczerpanie baterii.

Pozostawienie aktywności z powrotem lub w domu nie zmienia sposobu, w jaki Android traktuje usługi z tej samej aplikacji: usługa może być nadal uruchamiana lub może zostać uruchomiona później o określonej godzinie (przy następnym sprawdzeniu poczty).

Podsumowanie

Podsumowując, tak naprawdę nie ma znaczenia, czy korzystasz z powrotem, czy z domu : zmienia tylko to, co aplikacja pokazuje ci przy następnym uruchomieniu. Nie ma to wpływu na zużycie baterii. Żadne z nich nie odpowiada „wyjściu” z programu na komputerze.

Dan Hulme
źródło
Tak się cieszę, że ktoś to opisał! Jestem programistą, ale pracowałem dla Verizon Wireless i nie mogę powiedzieć, ile osób martwiło się tym, gdy nie było takiej potrzeby.
Roan
3

W Androidzie aplikacje nigdy nie muszą być zamykane, a system operacyjny zajmuje się czyszczeniem pamięci pozostałych aplikacji, gdy zasoby są potrzebne gdzie indziej. Użycie zabójcy zadań po prostu zakłóci normalne działanie systemu operacyjnego i może nawet spowolnić urządzenie, ponieważ aplikacje będą zawsze musiały być ponownie ładowane od samego początku.

Cykl życia aplikacji na Androida działa w taki sposób, że aplikacje, które nie są na wierzchu, są przenoszone w stanie wstrzymania, który nie używa już procesora; przechowywana jest tylko zawartość pamięci na wypadek ponownego otwarcia aplikacji; i pamięć zostanie w razie potrzeby zwolniona.

To powiedziawszy, twórca aplikacji ma obowiązek śledzenia cyklu życia aplikacji podczas tworzenia aplikacji, aby mogły wystąpić pewne błędy lub błędy, które spowodują, że aplikacja tak naprawdę nigdy się nie zatrzyma ani nie zatrzyma. Jeśli napotkasz taką aplikację i co ją zamknąć, możesz to zrobić, wybierając „Ustawienia” -> „aplikacje” -> „Zarządzaj aplikacjami”, wybierając „Wymuś zatrzymanie” w aplikacji.

Ale tak naprawdę nie polecałbym używania zabójcy zadań, który stale działa na urządzeniu.

jmbouffard
źródło
1

Chcę tylko dodać w odpowiedzi schwiz, że to tylko kilka linii kodu potrzebnych do zastąpienia funkcji przycisku Wstecz. Dlatego zamknięcie aplikacji nie zawsze jest niezawodne. Więc jeśli twórca aplikacji nie chce zamknąć aplikacji po naciśnięciu przycisku Wstecz, nie zostanie ona zamknięta.

Chociaż większość dobrych programistów aplikacji wyskakuje okienko z ostrzeżeniem po naciśnięciu przycisku Wstecz w menu głównym aplikacji, pytając, czy użytkownik zamierza wyjść z aplikacji, czy nie, jeśli klikniesz Wyjście, zamknie aplikację.

Prawidłowa odpowiedź może brzmieć tak: zamknięcie aplikacji jest całkowicie po stronie twórcy aplikacji, jeśli chcą, aby aplikacja zamknęła się po naciśnięciu przycisku głównego, wstawi kod wyjścia onPause(). Jeśli chcą go na przycisku Wstecz, umieszczą go w onBackKeyPressed. Więc tak naprawdę to nie zależy od użytkownika.

Użytkownik może po prostu uniknąć korzystania z aplikacji, które nie zapewniają odpowiedniej funkcji zamykania, gdy nie są potrzebne. Menedżerowie zadań nie są dobrym sposobem na zamknięcie aplikacji, ponieważ może ona spowodować awarię aplikacji i nie daje szansy na zapisanie stanu.

System operacyjny zamyka aplikację zawsze, gdy jest to konieczne, więc nie powinieneś się tym zbytnio przejmować.

Edycja:
Istnieje możliwość zniszczenia aplikacji, gdy tylko opuścisz aplikację, tj. Po kliknięciu klawisza głównego. Możesz przejść do Settings-> Developer Options-> Don't keep Activities. Chociaż jest to opcja dla programistów, ale jeśli zbytnio martwisz się aplikacjami działającymi w tle, możesz użyć tej opcji. Pamiętaj jednak, że nie zaleca się korzystania z niego przez programistów.

Nowicjusz
źródło