Auf Ice Cream Sandwich (ICS) kategorisiert das Betriebssystem Ihre App, und jede Kategorie hat ihren eigenen Schwellenwert, den das Betriebssystem verwendet, um zu bestimmen, welche App zuerst geschlossen wird, wenn ihr der Arbeitsspeicher ausgeht.
Hat sich jemand von Ihnen darüber geärgert, sagen wir, Sie haben einen Timer geöffnet, der im Hintergrund läuft, um die verstrichene Zeit von etwas zu messen, dann haben Sie ein paar weitere Apps geöffnet und sind zu Ihrem Timer zurückgekehrt, nur um zu sehen, dass er zurückgesetzt oder geschlossen wurde? Ich meine, im Ernst, es ist wirklich entsetzlich nervig.
Gibt es eine Möglichkeit, eine App zu zwingen, im Hintergrund weiter ausgeführt zu werden, auch wenn dem Betriebssystem der Speicher ausgeht?
Die akzeptierte Antwort stellte sich als falsch oder veraltet heraus. Mit dem Modul „App-Einstellungen“ für die Xposed-App können Sie auf App-Basis festlegen, dass Apps nicht gelöscht oder freigegeben werden:
http://repo.xposed.info/module/de.robv.android.xposed.installer
http://repo.xposed.info/module/de.robv.android.xposed.mods.appsettings
Beim Spielen mit Apps, die ein solches Low-Level-Verhalten ändern, sollte natürlich verantwortungsbewusst vorgegangen werden.
Einfache Antwort: Nein. Android verwendet immer OOM (Out-Of-Memory), um ungenutzten Speicher freizugeben. Sie können die Prioritäten von Apps (zumindest bis zum Neustart) mit einigen Task-Managern ändern, aber selbst dann, wenn der Speicher knapp wird, werden Apps im Hintergrund beendet.
Stellen Sie sich dieses Szenario vor: Sie haben eine schlecht codierte App heruntergeladen, die beim Booten ausgeführt wird, einen Pufferüberlauf verursacht und Ihren gesamten Speicher belegt. Normalerweise wird diese App beendet, aber wenn sie so eingestellt ist, dass sie geöffnet bleibt, blockiert sie Ihr Telefon effektiv bis zum Neustart und startet danach wieder und wieder usw.
Einige Timer verwenden Dienste mit hohen Prioritäten, um dieses Problem zu vermeiden, aber wenn Sie genügend leistungsstarke, ressourcenraubende Apps starten, während der Timer im Hintergrund läuft, wird er schließlich beendet.
LinkedList
, die nicht Integer.MAX_VALUE
durch ihre Struktur eingeschränkt ist und dynamisch erweitert werden kann.Integer.MAX_VALUE
. Warum denkst du, dass die Dinge durch Integer.MAX_VALUE
sowieso begrenzt sind?Nein. Allerdings fallen mir zwei Methoden ein, um das Problem zu lindern, aber beide können nur vom Entwickler implementiert werden: Die erste besteht darin, eine Benachrichtigung anzuzeigen, Android gibt Apps, die dies tun, eine höhere Priorität als andere. Die zweite besteht darin, die Startzeit zu speichern, damit der Timer, wenn er schließlich neu gestartet wird, nicht zurückgesetzt wird.
onSaveInstanceState
und onRestoreInstanceState
, um den App-Status einschließlich der Timer-Informationen zu speichern. Keine Notwendigkeit, im Vordergrund zu laufen. Selbst wenn es sich um einen Alarm handelt, können Sie AlarmManager
sicherstellen, dass er später ausgeführt wird. Der einzige Grund, aus dem Foreground verwendet werden sollte, ist: 1. Sie haben eine tatsächliche Aktivität im Vordergrund, wie das Abspielen von Musik oder das Zeigen eines Videos. 2. Sie wollen eine Datenverbindung offen halten (zB IMAP IDLE (push)).1. Methode: -- Wenn Sie Sticky Thread im Programm erstellen, können Sie Ihr Programm zwangsweise am Laufen halten. Denken Sie jedoch daran, dass der Benutzer im erweiterten Einstellungsmodus im Hintergrund laufende Apps stoppen kann. Wenn Sie den Sticky-Thread jedoch so schreiben, dass er bei einem bestimmten Ereignis beginnt, kann dies erreicht werden.
2. Methode: WENN der Benutzer kein gerootetes Android ist und eine App im Hintergrund ausführen möchte. Verwenden Sie das SL4-Skript im Hintergrund der App. Verwenden Sie ein Skript, das Hintergrundprüfungen und Programme durchführt, und schreiben Sie das Frontend, um etwas anderes anzuzeigen.
ZB: In den meisten Spiele-Engines ist dies eingebaut. Sie verbinden sich mit Servern, obwohl der Benutzer die App deaktiviert hat. Der Grund, warum die Engine mehrere Skripte im Telefon erstellt, die bei bestimmten Ereignissen zufällig überprüft werden, und dass TRIGGER verwendet wird, um Ihre App kontinuierlich im Hintergrund des Vordergrunds auszuführen.
***Entschuldigung für die TYPO's .. Rechtschreibprüfung nicht verfügbar. Hoffe, du erreichst, was du erreichen wolltest.
Manchmal gibt es eine Option zum Sperren der App. Dies verhindert das Beenden oder Stoppen dieser Anwendung im Telefon.
Die Sperroption ist im Betriebssystem selbst nicht verfügbar, die Verwendung einiger Apps von Drittanbietern wie GO Task Manager usw. kann hilfreich sein.
Fluss