Wie bleibt WhatsApp im Hintergrund, ohne geschlossen zu werden?

11

Android beendet normalerweise Hintergrundprozesse, wenn keine permanente Benachrichtigung vorliegt. Warum werden Apps wie WhatsApp und Facebook nicht getötet?

Theturtguy
quelle
3
Da sie einen Dienst ausführen, würde ich sagen :) Ich verwende weder WA noch FB, daher kann ich hier nicht sicher sein: Um ihre Priorität zu erhöhen, können Apps einen Dienst registrieren und ein Symbol in der Benachrichtigungsleiste anzeigen lassen, also das OOM Killer hält sie für "wichtiger" und "tötet stattdessen andere Sachen", wenn möglich.
Izzy
1
Ich denke, ein Symbol in der Taskleiste zu haben ist irrelevant (mein WA hat sowieso kein Symbol). Solange der Dienst wie bei einem "Dienstprozess" oder einer höheren Priorität ausgeführt wird.
Jiggunjer

Antworten:

9

Android beendet normalerweise Hintergrundprozesse, wenn keine permanente Benachrichtigung vorliegt.

Meistens ist dies der Fall, aber Android OutOfMemory Killer (die Komponente in Android, die für das Beenden von Prozessen verantwortlich ist) verwendet eine ziemlich komplexe Logik und ein ziemlich komplexes Kriterium, um Apps und Prozesse zu beenden , die diese Apps hosten.

In Android wird jede Anwendung in einem Linux-Prozess ausgeführt. In jedem Linux-Prozess läuft eine virtuelle Maschine (Dalvik Virtual Machine oder ART Virtual Machine). Der Speicher, den ein Prozess benötigen kann, ist begrenzt. Er ist für verschiedene Geräte unterschiedlich und unterscheidet sich auch für Telefone und Tablets.

Wenn Android nicht genügend Speicherplatz hat (möglicherweise, weil so viele Apps gleichzeitig auf einem Gerät ausgeführt werden), wird der OutOfMemory-Killer angezeigt und beendet Prozesse von Apps, die sich zuerst im Hintergrund befinden .

Jetzt verwenden Apps wie WhatsApp und Facebook sogenannte Service- und Push-Benachrichtigungsmechanismen. Mit dem Dienst kann die App Code im Hintergrund ausführen. Wenn die App von OOM Killer beendet wird, kann der Dienst von Android erneut gestartet werden, wenn genügend Speicher verfügbar ist, um sie auszuführen.

Warum werden Apps wie WhatsApp und Facebook nicht getötet?

Dies ist nicht der Fall, da Android Apps basierend auf ihrem Status (z. B. Vordergrund oder Hintergrund) beenden kann. Es ist nur so, dass die Apps und ihre Komponente (z. B. Service) neu gestartet werden, sobald sie Push-Benachrichtigungen erhalten, damit der Benutzer mit der App interagieren kann.

Wenn also eine Push-Benachrichtigung empfangen wird (dh eine WhatsApp-Nachricht), kann Android die Komponente der getöteten App neu starten (in diesem Fall WhatsApp).

Auf diese Weise verbirgt Android die komplexen Details der Speicherverwaltung und Prozessverwaltung vor dem Benutzer und stellt sicher, dass der Benutzer problemlos mit einer App interagieren kann.

AADAndroidEnthusiasts
quelle
Gibt es eine Möglichkeit, WhatsApp gegenüber Facebook zu priorisieren, z. B. mithilfe des Taskers zuerst etwas zu töten, um zu verhindern, dass das OOMK eine andere App beendet? Ich höre, Task-Manager sind schlecht, aber diese Art der Umgehung scheint wünschenswert?
Jiggunjer
Diese Antwort hat eine schöne Erklärung! Haben Sie offizielle Quellen, die Sie verlinken können, um die Logik zu bestätigen?
Asgs
Ich habe diese Antwort aufgrund meiner Erfahrung als Android-Entwickler geschrieben. Es gibt zahlreiche Dokumentationen, um zu untersuchen, wie OOM Killer funktioniert, und eine einfache Google-Suche sollte helfen, damit umzugehen. Ich habe diese Links nicht in meinen Beitrag eingefügt, um sie für Laien einfach und verständlich zu halten und nicht für Entwickler.
AADAndroidEnthusiasts