9Aug
Kiedy usuwasz aplikację z listy aktualnie uruchomionych aplikacji Androida, co dokładnie dzieje się z aplikacją i danymi? Czytaj dalej, gdy badamy.
Dzisiejsze pytanie &Sesja odpowiedzi jest dostępna dzięki uprzejmości Android Enthusiast - podrzędnej sekcji Stack Exchange, opartego na społecznościach grupy Q & A.
Pytanie Czytelnik
Android Entuzjastów Eldarerathis jest ciekawy, jak działa aplikacja z przesunięciem w aplikacji, dzięki której można wyświetlić listę uruchomionych aplikacji za pomocą przycisku strony głównej, a następnie przesuń je w prawo, prawdopodobnie, aby je zamknąć:
Lista ostatnich aplikacji wIce Cream Sandwich dodała możliwość usuwania aplikacji z listy, co powoduje ich trwałe odrzucenie( i o ile wiem, jest to funkcja waniliowa, a nie CM / niestandardowa ROM).Dokumentacja i podkreśla platformy nie wydają się obejmować działania tej funkcji pod maską, ale jestem ciekawy, co system faktycznie robi.
Dalsze dodawanie do mojej ciekawości, zdecydowałem się zrobić szybki test: uruchomiłem Music na CM9, a następnie wycofałem się z niego. Następnie sprawdziłem listę ostatnich aplikacji i zobaczyłem, że rzeczywiście tam był( i we właściwym stanie, w oparciu o miniaturę).Następnie przeszedłem do Ustawień- & gt; Aplikacje i wymuszono zatrzymanie aplikacji Muzyka, ale wciąż była ona wymieniona na najnowszej liście, co doprowadziło mnie do przekonania, że nie jest ona związana z procesami zachodzącymi w tle.
Zdając sobie sprawę, że muzyka mogła być kiepskim wyborem, testowałem również aplikację USA Today. To miało zasadniczo takie samo zachowanie i wydawało się, że było zmuszone do "ponownego uruchomienia" po zatrzymaniu siły( co ma sens), chociaż miniaturka z ostatniej listy aplikacji nie odzwierciedla tego( buforowana, zgaduję?).
Co zatem dzieje się na poziomie systemu operacyjnego po usunięciu aplikacji z ostatniej listy? Czy po prostu usuwa dane aplikacji z pamięci RAM i je zbiera, niszcząc zapisany stan?
Co dokładnie dzieje się po usunięciu aplikacji z listy?
Odpowiedzi
Entuzjasta Androida Entuzjasta Austin Mills oferuje pewien wgląd:
Przesuwając aplikacje z ostatniej listy aplikacji jest wanilia i tak, nie jest dobrze udokumentowana. To był temat przyzwoitej dyskusji na różnych forach Androida. .. w niektórych komentarzach najlepiej opisać konsensus: zachowanie jest podobne do, ale nie do końca takie samo, jak zamykanie aplikacji - w ogóle( dla aplikacji, którenie definiuj jawnego manipulowania przyciskami wstecznymi) to to samo, co odskakiwanie wystarczająco często z poziomu aplikacji, którą z niego wychodzisz.
Łącze ma trochę więcej szczegółów na temat szczegółów, ale ogólnie możesz myśleć o tym, jako o zamknięciu aplikacji.
Specyficzna dla aplikacji Muzyka, wierzę, że uruchamia usługę, więc podczas gdy samo zadanie( aplikacja Muzyka / interfejs użytkownika) może zostać zamknięte, usługa będzie nadal działać w tle, aby Twoja muzyka nie zatrzymała się nagle tylko dlatego, żezadanie zostało usunięte z powodów związanych z zarządzaniem pamięcią.To mogło mieć wpływ na to, co widziałeś.
Następnie, uczestnicząc w kółku życia pytań i odpowiedzi, Eldarerathis wrócił z własnymi własnymi badaniami, aby dopełnić odpowiedź:
Wygląda na to, że znalazłem magiczne terminy wyszukiwania, które doprowadziły do wyjaśnień od pracowników Google. W szczególności znalazłem kilka różnych miejsc, w których Dianne Hackborn wyjaśnia, co dzieje się, gdy przesuwasz coś z ostatniej listy. Pierwszy jest komentarzem do jednego z jej wpisów w Google+:
[W] ma miejsce szczególnie po przesunięciu ostatniego zadania, gdy:( 1) zabija każde tło lub puste procesy aplikacji( zobacz tutaj, co to oznacza),i( 2) używa nowego interfejsu API, aby poinformować dowolne usługi aplikacji o usuwanym zadaniu, aby mógł zrobić wszystko, co uzna za stosowne.
Zauważa także w komentarzu na blogu:
W rzeczywistości usunięcie wpisu w ostatnich zadaniach spowoduje zabicie procesów działających w tle, które istnieją w tym procesie. Nie spowoduje to bezpośrednio zatrzymania usług, jednak istnieje interfejs API, dzięki któremu mogą dowiedzieć się, że zadanie zostało usunięte, aby zdecydować, czy chcą, aby to oznaczało, że powinny przestać.Jest tak, że usunięcie mówi, że ostatnie zadanie aplikacji e-mail nie spowoduje, że przestanie sprawdzać pocztę e-mail.
Jeśli naprawdę chcesz całkowicie zatrzymać aplikację, możesz długo naciskać na ostatnie zadania, aby przejść do informacji o aplikacji i nacisnąć przycisk zatrzymania tam. Wymuszenie zatrzymania jest całkowitym zabójstwem aplikacji - wszystkie procesy zostają zabite, wszystkie usługi zatrzymane, wszystkie powiadomienia usunięte, wszystkie alarmy usunięte itd. Aplikacja nie może ponownie uruchomić się, dopóki nie zostanie wyraźnie zażądana.
Wygląda więc na to, że przesuwanie aplikacji z listy w pierwszej kolejności zabije wszystkie procesy działające w tle dla aplikacji, a następnie użyj polecenia onTaskRemoved, aby powiadomić aplikację, że zadanie w tle zostało usunięte. W tym momencie wygląda na to, że to zależy od aplikacji, aby zdecydować, co się dzieje, więc myślę, że technicznie nie jest twardą i szybką zasadą o tym, co dzieje się z aplikacją za tym punktem.
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.