Deaktivieren Sie den Autostart beim Booten und beschränken Sie die Ausführung im Hintergrund [duplizieren]

Gibt es eine Möglichkeit, Autostart-Apps beim Booten zu deaktivieren? Ich muss einige von ihnen (nicht alle) wie Facebook usw. deaktivieren, um eine schnellere Startzeit zu erhalten. Ich frage, wie man das auf Android 9.0 macht.

Um zu verhindern, dass eine App beim Start gestartet wird, sind Root-Berechtigungen erforderlich: stackoverflow.com/questions/9715214/…

Antworten (2)

Ohne auf die Details einzugehen, ob man das automatische Starten von Apps stoppen sollte oder nicht, und was die Konsequenzen sein könnten, wie in vielen anderen Antworten diskutiert, hier sind meine einfachen Lösungen, die zumindest auf Android Pie ohne Apps von Drittanbietern funktionieren können.

ROOT-LÖSUNG:

Apps verwenden BroadcastRceivers, um auf Broadcast ACTION_BOOT_COMPLETED zu lauschen , damit sie beim Booten ausgeführt werden können. Broadcast Receiver ist eine App-Komponente, die mit Root-Rechten deaktiviert werden kann.

Verwenden Sie den Paket-Manager, um alle Broadcast-Empfänger aufzulisten, die auf BOOT_COMPLETED warten:

~# pm query-receivers --components -a android.intent.action.BOOT_COMPLETED

Es wird eine Liste von Rundfunkempfängern im Format package_name/component_name. Siehe dumpsys activity broadcast-statsund dumpsys activity broadcastsfür weitere Einzelheiten.

Jetzt zum Deaktivieren einer Komponente:

~# pm disable <package/component>

Es gibt Apps wie Autostarts( com.elsdoerfer.android.autostarts ) und SD Maid( eu.thedarken.sdm ), die dasselbe für Sie tun können. Die Datei /data/system/users/0/package-restrictions.xmlkann auch direkt bearbeitet werden, um Apps oder ihre Komponenten zu deaktivieren, aber es wird nicht empfohlen.
Es ist möglich, mehrere Broadcast-Empfänger einer App zu deaktivieren, und ein einzelner Empfänger kann möglicherweise auch mehrere Arten von Broadcast-Ereignissen abhören .

NICHT-ROOT-LÖSUNG: (nicht universell)

Um zu empfangen android.intent.action.BOOT_COMPLETED, benötigen Apps android.permission.RECEIVE_BOOT_COMPLETED , was eine normale Berechtigung ist und daher nicht vom Benutzer widerrufen werden kann.

Es gibt jedoch ein verstecktes Berechtigungsverwaltungs-Framework mit dem Namen, AppOpsdas eine etwas feinkörnigere Steuerung von (berechtigungsähnlichen) Vorgängen bietet. OP_BOOT_COMPLETED ist eines davon, aber es ist kein Teil von AOSP, sondern wird nur von einigen benutzerdefinierten ROMs wie LineageOS hinzugefügt. Wenn Sie sich auf einem solchen ROM befinden, können Sie das Autostart-Verhalten über steuern adb shell:

~$ appops set <package> BOOT_COMPLETED deny

Jetzt darf die App keine BOOT_COMPLETED-Übertragung empfangen. Es gibt Apps wie App Ops( rikka.appops ), die dasselbe für Sie tun können. Einige benutzerdefinierte ROMs haben integrierte Frontends für AppOps mit unterschiedlichen Namen wie Privacy Guard , AutoStart Manager usw.

Bitte beachten Sie, dass AppOs :

ist im Allgemeinen nicht für Anwendungsentwickler von Drittanbietern bestimmt; Die meisten Funktionen sind nur für Systemanwendungen verfügbar

Daher kann die Verwendung ohne Root in den nächsten Android-Versionen untersagt oder schwieriger werden.


Beide oben genannten Methoden können verhindern, dass Apps nur beim Booten gestartet werden. Eine App kann auch auf einige andere Broadcast-Ereignisse warten und sie kann weiter neu gestartet werden, wenn sie beendet wird, oder kontinuierlich im Hintergrund (als Dienst) ausgeführt werden, wenn dies so konzipiert ist. Siehe dumpsys activity servicesfür weitere Details.

Ein etwas anderer Ansatz wäre, Apps daran zu hindern, im Hintergrund zu laufen, indem man OP_RUN_IN_BACKGROUND (eingeführt in Nougat) und/oder RUN_ANY_IN_BACKGROUND(eingeführt in Pie) verwendet, die Teil von AOSP sind:

~$ appops set <package> RUN_IN_BACKGROUND deny

Sie haben keine gleichwertige Manifest-Berechtigung, aber es gibt eine experimentelle Berechtigung mit demselben Namen.

Diese Frage wurde als doppelt markiert, aber andere Fragen haben nicht so gute Antworten wie Ihre. Danke. Ich denke, dass AppOps eine einfache Lösung ist. Ich habe vergessen zu erwähnen, dass ich mein Telefon gerootet habe.
@QkiZ ja, vorausgesetzt, Ihr ROM unterstützt dies. Oder Sie können sich für die Root-Option entscheiden.
seit wann pm query-receiverssoll das funktionieren? auf meinem Android 7 erhalte ich: "Error: unknown command 'query-receivers'"
@FrederickNord scheint in Nougat hinzugefügt worden zu sein: android.googlesource.com/platform/frameworks/base/+/… . Versuchen Sie es auch query-intent-receivers.
Es sagt "error: unknown operation string: RUN_IN_BACKGROUND" ich habe es auch mit RUN_ANY_IN_BACKGROUND und OP_RUN_IN_BACKGROUND versucht, Edit: meine Version hat es nicht android.googlesource.com/platform/frameworks/base/+/refs/tags/…
@VeganEye, wahrscheinlich haben Sie die Antwort nicht gelesen: "Ein etwas anderer Ansatz wäre, die Ausführung von Apps im Hintergrund zu stoppen, indem Sie OP_RUN_IN_BACKGROUND ( eingeführt in Nougat ) und/oder RUN_ANY_IN_BACKGROUND ( eingeführt in Pie ) verwenden."
Sie sollten diese Antwort zu den "doppelten" Fragen für eine bessere Sichtbarkeit hinzufügen, sie ist besser als alle anderen Antworten dort.
Kann bestätigen, dass die Root-Option unter Android 13 funktioniert. Ich habe die Empfänger in der App SD Maids AppControl für Spotify deaktiviert und funktioniert. Ich musste die App auf die Werkseinstellungen zurücksetzen, damit alles reibungslos funktioniert, aber das könnte nur ein Spotify-Speicherproblem sein.

Einige Geräte benötigen Root-Zugriff, um die Autostart-Berechtigungen zu verwalten ... Android 5.1 ermöglicht dies jedoch über die Autostart-Einstellungen in der Sicherheit.

  • Öffnen Sie Einstellungen > Sicherheit
    Sicherheit

  • Öffnen Sie die Autostart-Einstellungen
    Auto

  • Deaktivieren Sie die App vom automatischen Start
    deaktivieren

Diese Option sollte auf jedem System mit AppOpps verfügbar sein

Auch wenn nicht auf Android mit diesen Einstellungen

  • Einstellungen öffnen

  • Apps öffnen

  • Öffnen Sie die gewünschte Anwendung

  • Wählen Sie Berechtigungen aus

  • Deaktivieren Sie die Autostart-Berechtigung

Welches Gerät verwenden Sie? Ich habe das Standard-ROM Nexus 6 (Android 5.x - 7.x) und OnePlus 6 (Android 8.1) verwendet, und ich bin nie auf eine solche Option gestoßen.
@Firelord Bei benutzerdefinierten ROMs ist häufig ein AppOps-Manager integriert. Es ist kein Aktien-AOSP.
Kein Stock-ROM ... Nicht benutzerdefiniert ... AppOpps ist ein Teil von Stock Androids
Ja, appops ist Teil von AOSP, aber diese Option im Screenshot ist nicht verfügbar. Das ist es was ich meinte. Welches Gerät und ROM verwendest du?
AppOps ist Teil von AOSP, nicht von AppOps-Managern (GUI).
@Firelord, es wurde mit vielen Versionen von CM, LineageOS, AEX, RR und sogar OmniRom erstellt, wenn ich mich richtig erinnere.
Ich verwende Stock Android 5.0.1 auf dem ZTE Blade L4 Pro
@Zillinium Es wäre hilfreich, wenn Sie einen Link zu AOSP bereitstellen, wo der Quellcode des Autostart-Managements vorhanden ist.
Es heißt nicht Auto-Start-Verwaltung. Es ist Berechtigungsverwaltung ... Auto-Start erfordert die folgende Berechtigung ... "android.permission.RECEIVE_BOOT_COMPLETED" .. ... Sie stoppen oder verwalten den Auto-Start, indem Sie das Empfangen deaktivieren Berechtigung zum Booten für diese Anwendung abgeschlossen... Bitte beziehen Sie sich auf... Berechtigungsverwaltung...