Was passiert mit einem laufenden Programm, wenn auf dem Android-Handy die Home-Taste gedrückt wird?

27

Eine Sache verblüfft mich. Es sieht so aus, als ob ich ein Programm auf Android verwende und die "Home" -Taste drücke. Ich sehe den Startbildschirm und kann das Programm erneut ausführen und das Programm im gleichen Zustand wie zuvor anzeigen. nur ausgesetzt und dann wieder aufgenommen.

Dies scheint jedoch bei Air Control-Spielen nicht immer der Fall zu sein. Manchmal, wenn ich Air Control spiele und "home" drücke und Air Control später erneut ausführe, wird es angehalten (als ob ich die "Pause" -Taste gedrückt hätte) und ich kann das Spiel fortsetzen. Manchmal führt das auch dazu, dass Air Control das Spiel fallen lässt und neu startet.

Es sieht also so aus, als würde ich etwas nicht verstehen.

Was ist hier los? Was passiert mit einem Programm, wenn "home" gedrückt wird? Läuft es weiter oder was macht es?

scharfer Zahn
quelle
Ich bezweifle, dass das Drücken der Home-Taste zu einem höheren Stromverbrauch führt.
Flow

Antworten:

12

Durch Drücken von Homewechseln Sie von der App zum Startbildschirm, während Ihre App im Hintergrund ausgeführt wird. Dies ähnelt dem Wechseln zwischen Fenstern auf einem Windows-PC.

Wenn auf Ihrem Telefon nur noch wenige Ressourcen wie Speicherplatz zur Verfügung stehen, werden Apps geschlossen, die im Hintergrund ausgeführt werden, sodass auf Ihrem Telefon genügend Ressourcen für die aktuellen Aufgaben vorhanden sind. Spiele gehören häufig zu den ersten Apps, die das Telefon "tötet", um Ressourcen zu sparen, da sie häufig viel mehr Speicher und CPU als andere Apps belegen. Aus diesem Grund wird Ihr Spiel manchmal immer noch angehalten, und manchmal hat Android es für Sie geschlossen.

Über die BackSchaltfläche können Apps geschlossen werden, sodass sie tatsächlich geschlossen werden.

Siehe auch Was ist der richtige Weg, um Apps in Android zu schließen?

GAThrawn
quelle
26

Das Android-Entwicklungsdokument Tasks and Back Stack deckt dies ziemlich gut ab. Ein relevanter Auszug:

Eine Aufgabe ist eine zusammenhängende Einheit, die über die HOME-Taste in den "Hintergrund" verschoben werden kann, wenn Benutzer eine neue Aufgabe starten oder zum Startbildschirm wechseln. Im Hintergrund werden alle Aktivitäten in der Task gestoppt, aber der Backstack für die Task bleibt erhalten - die Task hat einfach den Fokus verloren, während eine andere Task ausgeführt wird, wie in Abbildung 2 dargestellt. Vordergrund ", damit Benutzer dort weitermachen können, wo sie aufgehört haben. Angenommen, die aktuelle Aufgabe (Aufgabe A) enthält drei Aktivitäten in ihrem Stapel - zwei unter der aktuellen Aktivität. Der Benutzer drückt die HOME-Taste und startet dann eine neue Anwendung über den Anwendungsstarter. Wenn der Startbildschirm angezeigt wird, tritt Task A in den Hintergrund. Wenn die neue Anwendung gestartet wird, startet das System eine Aufgabe für diese Anwendung (Aufgabe B) mit einem eigenen Aktivitätsstapel. Nach der Interaktion mit dieser Anwendung kehrt der Benutzer wieder nach Hause zurück und wählt die Anwendung aus, die ursprünglich Task A gestartet hat. Nun tritt Task A in den Vordergrund - alle drei Aktivitäten in seinem Stapel sind intakt, und die Aktivität oben im Stapel wird fortgesetzt. Zu diesem Zeitpunkt kann der Benutzer auch zu Aufgabe B zurückkehren, indem er nach Hause geht und das Anwendungssymbol auswählt, mit dem diese Aufgabe gestartet wurde (oder indem er die HOME-Taste berührt und gedrückt hält, um die letzten Aufgaben anzuzeigen und eine auszuwählen). Dies ist ein Beispiel für Multitasking unter Android. Der Benutzer kann auch zu Aufgabe B zurückkehren, indem er nach Hause geht und das Anwendungssymbol auswählt, mit dem diese Aufgabe gestartet wurde (oder indem er die HOME-Taste berührt und gedrückt hält, um die letzten Aufgaben anzuzeigen und eine auszuwählen). Dies ist ein Beispiel für Multitasking unter Android. Der Benutzer kann auch zu Aufgabe B zurückkehren, indem er nach Hause geht und das Anwendungssymbol auswählt, mit dem diese Aufgabe gestartet wurde (oder indem er die HOME-Taste berührt und gedrückt hält, um die letzten Aufgaben anzuzeigen und eine auszuwählen). Dies ist ein Beispiel für Multitasking unter Android.

Hinweis: Mehrere Aufgaben können gleichzeitig im Hintergrund ausgeführt werden. Wenn der Benutzer jedoch gleichzeitig viele Hintergrundaufgaben ausführt, werden möglicherweise Hintergrundaktivitäten zerstört, um den Speicher wiederherzustellen. Dadurch gehen die Aktivitätszustände verloren. Weitere Informationen zum Aktivitätsstatus finden Sie im folgenden Abschnitt.

Zusammenfassung : Die Aufgabe wird in den Hintergrund verschoben, wenn Sie auf drücken Homeund sich im Speicher befinden, ohne wirklich etwas zu tun und ihren Status beizubehalten. Dies bedeutet, dass Sie (im Allgemeinen) zu der Aufgabe zurückkehren können und sie dort fortsetzen, wo sie aufgehört hat. Das Android-System kann und wird jedoch Hintergrundaufgaben beenden, wenn Speicherplatz benötigt wird. Wann und ob dies geschieht, liegt ganz im Ermessen des Systems und ist wahrscheinlich der Grund, warum Sie bei der Wiederaufnahme ein inkonsistentes Verhalten feststellen.

Wenn die Aufgabe vom System zerstört wird, muss sie beim nächsten Start neu erstellt werden. Wenn der Autor der Anwendung keine Maßnahmen ergriffen hat, um den Status der Anwendung während des Zerstörungsprozesses zu speichern, geht dieser verloren (und das Speichern des exakten Status in Dingen wie Spielen ist ziemlich unpraktisch).

Ein weiteres gutes (aber auch ausführliches) Dokument ist das, das den Aktivitätslebenszyklus abdeckt (es gibt ein schönes Flussdiagramm, wenn Sie ein wenig nach unten scrollen).

eldarerathis
quelle
Sie werden also pro Task und nicht pro Aktivität / Prozess getötet. Letzteres würde das teilweise Beenden von Aufgaben ermöglichen, was wahrscheinlich unerwünscht ist.
Jiggunjer
4

Durch Drücken der Home-Taste kann der Benutzer eine neue Aufgabe starten, indem er den Startbildschirm anzeigt. Alle aktiven Tasks (und damit Activities inkl. Ihres "Air Control" -Beispiels) rufen ihre onPause()Methode auf.

Es liegt an der App (und deren Aktivität), den exakten vorherigen Status wiederherzustellen, wenn er wieder sichtbar wird. Es ist auch möglich, dass der Apps-Prozess beendet wird, während die Aktivität im Hintergrund ausgeführt wird, dies sollte jedoch die Benutzererfahrung nicht beeinträchtigen. Der Benutzer sollte keinen Unterschied feststellen können, ob eine Aktivität gerade angehalten oder auch beendet wurde. Dies könnte das unterschiedliche Verhalten von Air Control erklären, was ein Hinweis auf eine fehlerhafte Implementierung des Android-Lebenszyklusmanagements sein könnte.

Fließen
quelle
Ich denke, mit "getötet" meinen Sie gestoppt, im Gegensatz zu zerstört. Ich glaube an die normale Linux-Terminologie, wenn Sie einen Prozess (zB Aktivität) beenden Sie destroy()die entsprechenden App-Komponenten.
Jiggunjer
Nein, ich meine zerstört.
Flow
Wenn Sie die Home-Taste drücken, wird die onStopMethode aufgerufen. Ein getöteter Prozess bedeutet nicht, dass die Aktivität ihre onDestroyedMethode erhält , obwohl sie in der Tat ähnlich ist. "Beenden" eines Aktivitätsprozesses bedeutet, dass die VM aus dem RAM entfernt wird. Für mich scheint dies (Android tötet es) die Benutzererfahrung zu beeinträchtigen.
Jiggunjer
4

Mein Ruf auf dieser Seite ist immer noch zu niedrig, um eine Stimme abzugeben. Ich antworte daher auf die Antwort von Flow. Ich stoße in einer meiner Apps immer wieder auf dieses Problem. Ich habe verschiedene Spinner-Steuerelemente und Sie müssen ihren Status explizit in onPause () speichern und dann in onResume () wiederherstellen - Android merkt sich ihren Status nicht automatisch.

Eine weitere Komplikation ist, dass Android manchmal die Funktion onCreate () einer App aufruft, wenn Sie nur erwarten, dass sie onResume () aufruft.

Daher ist Ihr Problem mit Air Control (oder einer anderen App) für diese App spezifisch und Sie sollten das Verhalten dem Entwickler zur Korrektur melden. Die meisten Apps haben eine Kontakt-E-Mail im Market.

Übrigens, wenn Sie den Lebenszyklus einer App verstehen möchten, empfehle ich Kapitel 2 von Ed Burnette's Hello, Android, insbesondere Abbildung 2.3.

Gdalya
quelle
3

Home-Taste gedrückt, wenn in einer App:

Die meisten Apps speichern ihren Status (alle Daten, die benötigt werden, um sich selbst bei der Wiederaufnahme zu konsistent zu halten), und das Gerät wechselt zur Launcher-App.

Home-Taste Wird auf den Startbildschirmen gedrückt:

Dies kann von vielen Launchern von Drittanbietern konfiguriert werden. Viele von ihnen kehren jedoch standardmäßig zum "Haupt" -Startbildschirm zurück (der Standard-Starter führt dies aus).

Worüber könnte Ihr Freund besorgt sein:

Das Wechseln von Apps kann speicherintensiv sein und dazu führen, dass mehrere Schreibvorgänge auf der Festplatte die Daten speichern. Dies verbraucht Batterie; In der Regel ist dies jedoch nicht die Hauptursache für die Batterieentladung der Geräte (die Betriebssysteme sind für diese Funktionen optimiert).

Einige Anwendungen werden weiterhin als Hintergrundanwendung ausgeführt. Wenn Sie also die Home-Taste drücken, werden sie nicht beendet (z. B. wird Google Play Music auch nach dem Drücken der Home-Taste wiedergegeben).

Ihr Freund könnte besorgt sein, dass Sie das Programm durch Drücken der Home-Taste nicht beendet haben und es daher weiterhin ausgeführt wird. Android entlädt diese Anwendungen nach Bedarf.

Sie und Ihr Freund sollten sich mehr mit dem Display beschäftigen, das die meiste Energie verbraucht.

Dylan Yaga
quelle