In der letzten App-Liste in Ice Cream Sandwich wurde die Möglichkeit hinzugefügt, Apps aus der Liste zu streichen und damit dauerhaft zu verwerfen (und soweit ich weiß, handelt es sich um eine Vanille-Funktion, nicht um eine CM / Custom-ROM-Funktion). Die Dokumentation und die Plattform-Highlights scheinen nicht die Funktionsweise dieser Funktionalität zu beschreiben, aber ich bin gespannt, was das System tatsächlich tut.
Um meine Neugier zu steigern, entschied ich mich für einen kurzen Test: Ich startete Music mit einer CM9-Installation und machte dann einen Rückzieher. Ich habe dann die Liste der zuletzt verwendeten Apps überprüft und festgestellt, dass sie tatsächlich vorhanden ist (und sich im richtigen Zustand befindet, basierend auf der Miniaturansicht). Ich habe daraufhin Settings->Applications
die Musik-App mit Gewalt gestoppt, sie wurde jedoch immer noch in der aktuellen Liste aufgeführt, was mich zu der Annahme veranlasste, dass sie nicht mit im Hintergrund verweilenden Prozessen zusammenhängt.
Als mir klar wurde, dass Musik eine schlechte Wahl war, testete ich sie auch mit der USA Today-App. Dies zeigte im Grunde das gleiche Verhalten, und es schien, als ob es nach dem erzwungenen Stopp "neu gestartet" werden musste (was Sinn macht), obwohl die Miniaturansicht in der Liste der letzten Apps dies nicht widerspiegelte (zwischengespeichert, vermute ich?).
Was passiert auf Betriebssystemebene, wenn Sie eine App aus der aktuellen Liste streichen? Löscht es einfach die Daten der App aus dem RAM und sammelt es Müll, wodurch der gespeicherte Zustand zerstört wird?
quelle
Ich habe anscheinend die magischen Suchbegriffe gefunden, die zu einigen Erklärungen von Google-Mitarbeitern geführt haben. Insbesondere habe ich einige Stellen gefunden, an denen Dianne Hackborn erklärt, was passiert, wenn Sie etwas aus der aktuellen Liste streichen. Der erste ist ein Kommentar zu einem ihrer Google+ Beiträge :
Sie stellt auch in einem Blog-Kommentar fest :
Es sieht also so aus, als würde die Zusammenfassung so aussehen, als würde das Wischen einer App aus der Liste zuerst alle Hintergrundprozesse für die App beenden und dann
onTaskRemoved
die App darüber benachrichtigen, dass die Hintergrundaufgabe entfernt wurde. An diesem Punkt scheint es an der App zu liegen, zu entscheiden, was passiert. Ich vermute, dass es technisch keine feste Regel gibt, was danach mit der App passiert.quelle
Der Quellcode enthält einige Informationen in den Klassen com.android.internal.policy.impl.RecentApplicationsBackground und com.android.internal.policy.impl.RecentApplicationsDialog .
Wenn ich diese richtig lese, gibt es spezielle Handler zum Auswählen der Apps, aber nichts Besonderes zum Wischen, außer dass das Element durch
onDetachedFromWindow()
Aufrufen verborgencom.android.View.onDetachedFromWindow()
und die Daten gelöscht werden. Dies würde darauf hindeuten, dass beim Wischen der App nichts Besonderes passiert, was mit der Antwort von Austin Mills übereinstimmt, da in der Liste nicht die aktive App angezeigt wird, dieonPause()
und andere Systemaufrufe, die beim "Beenden" einer Anwendung ausgeführt werden Schon passiert.quelle
Ich denke, es wird dasselbe tun wie der Zurück-Button. Bis auf eine kleine Veränderung. Es werden
finish()
alle Aktivitäten / Fragmente in der App angezeigt.Habe gerade ein wenig mit einer kleinen selbstgebauten App getestet. Sie können auch testen. Hier ist meine Test-App: https://bitbucket.org/Leandros99/lifecycletest (auch als Download erhältlich. Für diejenigen, die nicht bauen können.)
In jeder Activity-Lifecycle-Methode ( http://developer.android.com/reference/android/app /Activity.html#ActivityLifecycle ) druckt die App ein Protokoll. Sie können es mit adb logcat anzeigen (Android SDK installieren, CD in Plattform-Tools in cmd / shell
adb logcat
speichern und eingeben. Jetzt sehen Sie, dass die App jedes Mal die oben erwähnte Lebenszyklusmethode druckt, wenn Sie etwas wie "Zurück" oder "Start" tun. )Ihre Frage: Wenn ich eine App aus der letzten App-Schublade wische, wird die
onDestroy
Methode aufgerufen. Es funktioniert fast genauso wie der Zurück-Knopf.Hoffe ich habe ein bisschen geholfen. Wenn es Fragen gibt, frag einfach.
quelle
Es schließt die App und ihre Daten, die im RAM gespeichert sind. Auf diese Weise erhalten Sie mehr RAM-Speicher, sodass Sie andere Apps ausführen können. Hintergrunddienste werden jedoch NICHT automatisch geschlossen, da die verwendende App geschlossen wird.
quelle