Tauscht Android Speicher aus, der von Vordergrunddiensten verwendet wird?

Wenn ich mir ein Android-KitKat-Gerät von LG anschaue , sehe ich, dass eine aufgerufene App Software Updateimmer als Vordergrunddienst ausgeführt wird (100). Dieser Dienst belegt eine beträchtliche Menge an Speicher.

Soweit ich das beurteilen kann, ist diese App nur für OTA-Updates gedacht, was ein außergewöhnlich seltenes Ereignis ist (bisher noch nie passiert ist!).

Um etwas Arbeitsspeicher freizugeben, habe ich darüber nachgedacht, zu verhindern, dass die App beim Booten startet (indem ich ihren Broadcast Receiver deaktiviere), und sie dann einfach von Zeit zu Zeit manuell auszuführen, um nach Updates zu suchen.

Aber bevor ich das tue, möchte ich fragen, ob es überhaupt eine Rolle spielt? Wird Android für Apps, die immer einen Vordergrunddienst ausführen, einfach den Speicher wie eine Hintergrund-App auslagern? Oder ist der von ihnen verwendete Speicher jederzeit vollständig gesperrt, wodurch sich mein Plan lohnt?

Haben Sie versucht, automatische OTA-Updates einfach in den Einstellungen >> über das Telefon zu deaktivieren
Gute Frage. Ja, ich ging zu Einstellungen -> Über das Telefon -> Update Center a und wählte Aus für Update-Benachrichtigungszyklus
Ich verstehe, warum es nicht einfrieren? Entsperren Sie von Zeit zu Zeit, um Ihnen den zusätzlichen Ärger zu ersparen

Antworten (1)

du sagtest :

(durch Deaktivieren des Broadcast-Empfängers)


Lassen Sie mich zunächst darauf hinweisen, dass Broadcast Receiverund Servicenicht dasselbe ist. Sie werden den Unterschied zwischen ihnen in der Antwort erfahren.

Rundfunkempfänger:

Ein BroadcastReceiver ermöglicht, dass eine Anwendung für kurze Zeit im Hintergrund ausgeführt wird, wenn etwas anderes passiert. Bei der Bearbeitung einer Sendung wird der Anwendung eine feste Zeitspanne (derzeit 10 Sekunden) für ihre Arbeit gegeben. Wenn es in dieser Zeit nicht abgeschlossen wird, wird die Anwendung als sich schlecht benehmend betrachtet und ihr Prozess sofort in den Hintergrundzustand geworfen, um bei Bedarf für Speicher beendet zu werden.

Wie Sie also lesen können, kann BroadcastReceiver eine App nicht länger als 10 Sekunden im Hintergrund laufen lassen, irgendwie begrenzt, oder? Deshalb gibt es Dienstleistungen.

Dienstleistungen :

  • Zitat des gleichen Autors aus dem gleichen Artikel:

Ein Dienst ermöglicht es einer Anwendung, länger andauernde Hintergrundoperationen zu implementieren. Es gibt tatsächlich viele andere Funktionen, die Dienste bereitstellen.

Die Android-Prozessverwaltung für Dienste unterscheidet sich von Broadcast-Empfängern, da eine unbegrenzte Anzahl von Diensten die Ausführung für eine unbekannte Zeitdauer anfordern kann. Möglicherweise ist nicht genügend RAM vorhanden, um alle anfordernden Dienste auszuführen, sodass keine starken Garantien dafür gegeben werden, dass sie in der Lage sind, sie am Laufen zu halten.

Wenn zu wenig RAM vorhanden ist, werden Prozesse, die Dienste hosten, wie Hintergrundprozesse sofort beendet. Gegebenenfalls erinnert sich Android jedoch daran, dass diese Dienste weiterhin ausgeführt werden möchten, und startet ihren Prozess zu einem späteren Zeitpunkt neu, wenn mehr RAM verfügbar ist. Wenn der Benutzer beispielsweise zu einer Webseite geht, die viel RAM benötigt, beendet Android möglicherweise Hintergrunddienstprozesse wie die Synchronisierung, bis der Speicherbedarf des Browsers sinkt

Dienste können dieses Verhalten weiter aushandeln, indem sie anfordern, dass sie als "Vordergrund" betrachtet werden. Dies versetzt den Dienst in einen "Bitte nicht töten"-Zustand, erfordert jedoch, dass er eine Benachrichtigung an den Benutzer darüber enthält, dass er aktiv läuft, wie Musikplayer, Antivirus usw.

Die App muss eine Benachrichtigung anzeigen, in Ihrem Fall handelt es sich um eine Systemanwendung, für die diese Anforderung nicht erforderlich ist. Sie kann dem System mitteilen, dass sie die ganze Zeit ausgeführt werden muss, und das System wird sie nur dann nicht beenden, wenn das System mehr Speicher benötigt und es ist der einzige Dienst, der noch läuft (wie hoch ist die Wahrscheinlichkeit, dass das passiert).

Nun zurück zu Ihrer Frage. Lohnt sich das? Ich denke, es liegt daran, dass es sich um einen verschwendeten (wirklich verschwendeten) Speicher handelt, der verwendet wird und nicht ohne Zweck freigegeben wird.

Ich werde hinzufügen :

Ihr Plan, den Sendeempfänger zu stoppen, hält den Dienst möglicherweise nicht im Hintergrund. Ich würde empfehlen, dass Sie die App unter Einstellungen> Anwendung> Alle deaktivieren und auf Deaktivieren klicken (falls diese Schaltfläche vorhanden ist) oder die Anwendung mit Titanium Backup einfrieren.

Siehe: http://android-developers.blogspot.com/2010/04/multitasking-android-way.html http://www.howtogeek.com/161225/htg-explains-how-android-manages-processes/ http ://developer.android.com/training/articles/memory.html

Sie sollten immer die Quelle(n) zitieren und den Autor angemessen benennen. Bitte folgen Sie den Anweisungen zum Referenzieren von Material, das von anderen geschrieben wurde . Vielleicht hast du es verpasst?
@Firelord Ich weiß nicht, wie ich die genaue Nachbildung davon machen soll. Ich hoffe, das, was ich getan habe, ist in Ordnung
WOW!!! Gute Antwort! Vielen Dank! Ich habe so viel von deiner Antwort gelernt. Danke schön! Nur um mehr zu erfahren, wäre das Deaktivieren der Dienste genauso erfolgreich (oder erfolgreicher als) das Deaktivieren der App? Siehe: android.stackexchange.com/questions/129427/…
@RockPaperLizard Das Problem bei dieser Frage ist ein Fehler. Eine deaktivierte App sollte vom System ignoriert werden. Sie wird nicht in die installierten Apps aufgenommen, und der Paketmanager sollte sie nicht auflisten. Wenn Sie die Schaltfläche "Deaktivieren" unter "Einstellungen" haben, klicken Sie darauf und Bestätigen Sie, dass Sie bereit sind, keine weiteren komplizierten Arbeiten auszuführen. Die ADB-Methode und die Deaktivierungsmethode sind praktisch gleich. Sie sagen dem Paketmanager, dass er diese App ignorieren soll, genau wie er es mit der „Setup Wizard App“ tut, nach der sie deaktiviert wird die erste Konfiguration, sehen Sie irgendwo nach dem ersten Start den Setup-Assistenten? niemals .
Danke. Ich beginne damit, die App zu deaktivieren. Beachten Sie, dass das Deaktivieren von Diensten genauso einfach ist wie das Deaktivieren der App, wenn Sie MyAndroidTools verwenden: play.google.com/store/apps/details?id=cn.wq.myandroidtools
Ich verstehe, ich denke, das Deaktivieren der gesamten App wird sicherer und effektiver sein, aber wie sie sagen, alle Straßen führen dich nach Rom, du musst einen Weg wählen