Wenn ich mir ein Android-KitKat-Gerät von LG anschaue , sehe ich, dass eine aufgerufene App Software Update
immer 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?
du sagtest :
(durch Deaktivieren des Broadcast-Empfängers)
Lassen Sie mich zunächst darauf hinweisen, dass Broadcast Receiver
und Service
nicht 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 :
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
Rachid Boudjelida
RockPaperLz- Maskiere es oder Casket
Rachid Boudjelida