Wie kann ich verhindern, dass Apps im Hintergrund ausgeführt werden? [Duplikat]

Mögliches Duplikat:
Wie kann ich die Ausführung von Anwendungen und Diensten stoppen?

Es gibt bereits eine ähnliche Frage wie diese, aber meine ist enger gefasst und wird in der anderen Frage nicht behandelt:

Betrachten Sie den Fall einer App, die die folgenden Kriterien erfüllt:

  1. Nehmen wir als Beispiel einen Dateimanager , aber es könnte genauso gut eine andere App sein. Die spezifische App ist für diese Frage nicht wichtig.
  2. Diese App muss nicht unbedingt im Hintergrund ausgeführt werden. Die Dateiverwaltung benötige ich nur, wenn ich die App aktiv nutze. (Falls sich herausstellt, dass mein spezifisches Beispiel einen Bedarf hat, nehmen Sie für die Diskussion an, dass dies tatsächlich nicht der Fall ist.)
  3. Die Tatsache, dass es im Hintergrund läuft, wird von einem Systemmonitor bestätigt .
  4. Obwohl ich glaube, dass es keinen legitimen Grund hat, im Hintergrund zu laufen, und das auch nicht möchte, möchte ich es nicht deinstallieren.

Kann ich verhindern, dass eine solche App im Hintergrund läuft?

Praktische Anwendung

Um die Notwendigkeit dieser speziellen Frage zu veranschaulichen und warum ich keine bestimmten Apps nenne, bedenken Sie, was ich beim Schreiben dieser Frage im Sinn hatte:

Ich möchte meine Apps durchgehen und entscheiden, welche ich als Dienste ausführen möchte. Einige sollten ohne Einschränkungen laufen. Einige sollten niemals laufen. Einige sollten nur ausgeführt werden, wenn bestimmte Bedingungen erfüllt sind. Mit den Informationen aus einer Antwort auf diese Frage könnte ich dies implementieren - möglicherweise durch ein benutzerdefiniertes Skript, möglicherweise mit Tasker oder möglicherweise mit einem anderen Ansatz. Der Versuch, dies über die Einstellungen jeder einzelnen App zu handhaben, wäre nahezu unmöglich.

Wenn das, was ich in dieser Frage verlange, nicht möglich ist, ist diese Anwendung natürlich nicht praktikabel.

Notizen basierend auf den Kommentaren und Antworten

  • Der Grund, warum ich das tun möchte, ist irrelevant. Vielleicht um Batterie zu sparen. Vielleicht ist es ein anderer Grund. Bei dieser Frage geht es um das Wie , nicht um das Warum . Eine Warnung, dass eine bestimmte Lösung negative Nebenwirkungen haben könnte, ist nützlich, wenn sie zusammen mit dieser Lösung präsentiert wird. Zu sagen: „Es ist unmöglich“ ist legitim, wenn es wahr ist. „Mach es nicht“ zu sagen ist nicht sinnvoll.
  • Dies ist kein Duplikat der Frage , die ich in meinem ersten Absatz verlinkt habe. Bei dieser Frage ging es darum, Speicher zu sparen. Dieser ist es nicht. Dieser sagte im Grunde: "Versuchen Sie es nicht." Das ist keine gültige Antwort auf diese Frage.
  • Die konkreten Apps sind unwichtig, weshalb ich vage war. Ich habe einen Hinweis auf ein bestimmtes Beispiel gegeben, das ich im Sinn hatte, aber ich suche hier nach einer allgemeinen Antwort.
  • Eine Lösung muss auch verhindern, dass eine App automatisch neu gestartet wird; andernfalls ist es nicht viel von einer Lösung.
  • Eine Reihe von Leuten hat angegeben, dass dies ein Duplikat ist. Lassen Sie mich versuchen, klarer zu erklären, warum es nicht so ist:
    1. Bei dieser Frage geht es darum, wie verhindert werden kann, dass eine App im Hintergrund ausgeführt wird, einschließlich des Stoppens des Neustarts, wenn sie beendet wird.
    2. Die bisherigen Antworten lassen sich in einige allgemeine Kategorien einteilen:
      1. Sie sollten es nicht versuchen, da dies unnötig ist. Ich bestreite diesen Punkt zu diesem Zeitpunkt nicht, aber „Du solltest es nicht versuchen“ unterscheidet sich sehr von „Du kannst nicht“. Logischerweise geht es um eine andere Frage, nämlich „Soll ich versuchen, Apps zu beenden, die ich nicht ausführen möchte?“
      2. Verwenden Sie Methode X, um die App zu beenden. Als ich diese Methode ausprobierte, verhinderte dies leider nicht, dass die App neu gestartet wurde, genau wie andere vorhergesagt hatten. Es ist also nicht wirklich eine Antwort.
      3. Pingen Sie den Entwickler/es ist ein Fehler. Dies ist die nützlichste der vorgeschlagenen Lösungen, aber meine Frage suchte nach einer generischen Lösung.
    3. Die anderen Fragen, von denen diese Frage angeblich ein Duplikat ist, decken den gleichen Bereich ab wie in meinem vorherigen Punkt. Daher wurde meine spezielle Frage trotz vieler gegenteiliger Behauptungen nicht beantwortet. Es scheint jedoch, dass die Antwort ein einfaches "Du kannst nicht" ist.
    4. Es gibt eine verwandte Frage zu Meta. In Jeff Atwoods Antwort sagt er teilweise: "Es reicht im Allgemeinen aus, auf die andere Frage zu verlinken und zu erklären, warum sie Ihren Anforderungen nicht entspricht." Der ganze Thread bezieht sich auf diese Frage. Ich habe dies von Anfang an getan und in späteren Änderungen weitere Details angegeben.
Da dies keine wirkliche Antwort ist, werde ich nur kommentieren: Viele benutzerdefinierte ROMs haben eine Funktion, um durch langes Drücken der Zurück-Taste jede aktive App vollständig herunterzufahren. Ich verwende dies häufig, um Apps zu beenden, die ich vollständig entfernen möchte, bis ich sie das nächste Mal öffne. Abgesehen davon ist es gut zu wissen, dass Hintergrund-Apps Ihre Akkulaufzeit nicht beeinträchtigen sollten.
Ihre Frage ist ein Duplikat von zu vielen Fragen; Es ist nicht enger gefasst, Sie buchstabieren nur, was viele andere nicht getan haben. Zu sagen, dass es kein Duplikat ist, bedeutet nicht, dass es kein Duplikat ist. Die Lösungen fielen immer in drei Kategorien: 1) Taskkiller verwenden, 2) die App deinstallieren oder 3) den Dienst in der App deaktivieren. Es gibt auch viele Fragen, in denen die Vor- und Nachteile von Task-Killern diskutiert werden. An dieser Stelle sehe ich in dieser Frage nichts, was nicht bereits in anderen Threads diskutiert wurde. Bitte seien Sie genauer, die Verwaltung von Hintergrundaufgaben kann nur von Fall zu Fall entschieden werden.
@LieRyan: Siehe meine Bearbeitung oben, wo ich erkläre, warum dies tatsächlich eine andere Frage ist.
Ich denke, wir brauchen eine kanonische Frage dieser Art. Die Duplikate 1 , 2 , von 3 fallen nicht in diese Kategorie. Ich schlage vor, die Antworten von 3 hierher zu migrieren und als Duplikat zu markieren.
Der einfache Ablauf des Aktivitätslebenszyklus, der auf den Entwicklerseiten von Google dokumentiert ist und von einer großen Mehrheit der Entwickler eingesetzt und verwendet wird. Worauf Sie stoßen, ist Folgendes: Wie kann ich eine App steuern, die ein Entwickler erstellt hat ? um zu verhindern, dass es in den Hintergrund tritt - das geht nicht! Der Entwickler hat möglicherweise eine Designentscheidung über den Lebenszyklus getroffen und stattdessen einen Dienst verwendet! Aber diese Frage ist umstritten, da Sie nicht spezifisch sind und der wahren Frage ausweichen – auf welche Apps beziehen Sie sich?
Schließlich gibt es eine Diskussion über das eigentliche Problem. Die Frage, wie Sie sie zusammengefasst haben, ist vollkommen vernünftig, da Sie in einigen Welten (ich komme aus der Linux-Welt) unter vielen Umständen genau das tun können. In Android können Sie das also anscheinend nicht. Meinetwegen. Das ist die Antwort, nach der ich gesucht habe. Indem ich nicht spezifisch bin, weiche ich der wahren Frage nicht aus. Ich versuche, die Leute dazu zu bringen, die wahre Frage zu beantworten, anstatt bequemere, irrelevante Fragen zu beantworten, wie es die Leute versucht haben. Wenn ich genauer wäre, würde ich Antworten erhalten, die sich speziell auf diese Apps beziehen, keine allgemeinen Antworten.
Bitte beachten Sie, dass diese Seite (und damit auch der Rest von Stack Exchange) am besten mit spezifischen Fragen funktioniert, die die Möglichkeit einer einzigen, endgültigen Antwort haben. Eine "allgemeine" Frage kann zu weit gefasst sein, um nützliche Antworten zu erhalten.
Das Problem hier ist, dass der Mangel an Spezifität bedeutet, dass zu viele völlig unterschiedliche Fälle in einen Topf geworfen werden: Es gibt eine Hintergrundresidenz ohne tatsächliches Ausführen, einfach eine anstehende Ressourcenrückgewinnung. Es läuft im Hintergrund, um etwas für Sie zu tun, von dem Sie nicht wussten, dass es noch passieren muss. Aufgrund von Fehlern/Entwicklern, die Aktivitäts- und Dienstlebenszyklusprobleme nicht verstehen, wird Hintergrund ausgeführt. Und schließlich wird im Hintergrund ausgeführt, um Dinge zu erreichen, von denen Sie möchten, dass die App sie nicht versucht, die entweder nutzlos oder aktiv schädlich sind.

Antworten (4)

tl;dr

Es ist in Ordnung, wenn die App im Hintergrund nur eine Aktivität ist. Aktivitäten verbrauchen nur etwas Speicher und können normalerweise keine Berechnungen im Hintergrund ausführen. Daher wird für sie keine CPU oder Batterie verwendet. Aber wenn die App im Hintergrund einen Dienst ausführt:

Pingen Sie den Entwickler

Pingen Sie den Entwickler! Einer der größten Daemons, die mit Android geliefert werden, sind Dienste, die ohne Grund im Hintergrund laufen oder wenn eine einfache Intervallprüfung mit dem AlarmManager von Android ausreichen würde. Wir müssen sie alle mit Feuer töten und nicht, indem wir sie ignorieren. Alles, was keine Korrektur durch den Entwickler beinhaltet, ist nur ein schmutziger Hack, der erfahrungsgemäß zu anderen negativen Nebenwirkungen führt.

Aktivitäten, die im Hintergrund ausgeführt werden

Reine Android-Apps und ihre Aktivitäten bleiben normalerweise noch eine Weile im Gedächtnis, nachdem sie aus dem Blickfeld genommen wurden. Aber irgendwann werden sie möglicherweise vom ActivityManager von Android gelöscht, wenn ein anhaltender Speicherdruck besteht. Dies ist beabsichtigtes Verhalten, wir (die Benutzer) wollen es so und es funktioniert gut in neueren Android-Versionen. Daher ist nichts falsch, wenn Sie sehen, dass Ihr Dateimanager im Speicher herumhängt.

Dienste, die im Hintergrund ausgeführt werden

Wenn es sich jedoch um einen Dienst handelt, der ohne ersichtlichen Grund für immer läuft (und ohne die Möglichkeit, den Dienst irgendwo in den Apps-Einstellungen zu deaktivieren), sollten Sie sich an den Entwickler wenden . In 99 % aller Fälle gibt es keinen Grund, damit Ihr kostbares Gedächtnis zu verschwenden. Android bietet mit Intents und dem bereits erwähnten AlarmManager genügend Möglichkeiten, langlaufende Dienste zu vermeiden. Manchmal antworten Entwickler mit "aber Google Maps macht das auch" . Ich behaupte, dass dies niemals eine Entschuldigung dafür ist, auf andere zu zeigen, und es ist kein triftiger Grund, einen Hintergrunddienst auszuführen.

Gute Erklärung und auf den Punkt gebracht, +1 von mir. Ich bin nur sauer, dass du mein Google-Maps-Argument geklaut hast xD In zu vielen Fällen gibt Google selbst die schlimmsten Beispiele (siehe z. B. Hintergrundsynchronisierungseinstellungen, die von mehreren Google-Apps permanent ignoriert werden, und andere "Hintergrundaktivitäten", die dies nicht sind konfigurierbar -- davon könnte ich ein langes Lied singen...).

Kann ich verhindern, dass eine solche App im Hintergrund läuft?

Du weigerst dich, die Antworten zu akzeptieren, die du bekommst, weil du denkst, dass sie nicht passen, aber sie tun es. Ihre Frage ist, wie Sie Apps automatisch stoppen können, anstatt sie im Hintergrund laufen zu lassen. Die Antwort, die Sie erhalten, ist, dass dies in den meisten Fällen unnötig ist und die Art und Weise, wie Android für den Umgang mit Hintergrund-Apps erstellt wurde, vollständig umgeht.

Es gibt viele Apps, um Apps im Hintergrund zu beenden. Sie können sie auch wegwischen oder in bestimmten ROMs kurze Befehle wie "Langes Zurückdrücken" verwenden, um den Vorgang zu beenden. Sehr selten ist dies jedoch vom Benutzer zu erwarten; Eine sich schlecht benehmende App sollte zuerst gemeldet werden, anstatt umgangen zu werden.

Wenn eine App "keine legitime Notwendigkeit hat, im Hintergrund ausgeführt zu werden", aber dennoch Systemressourcen verwendet (bitte stellen Sie sicher, dass dies tatsächlich der Fall ist), dann ist diese App schlecht konzipiert. Es ist kein Fehler des Android-Betriebssystems.

Davon abgesehen gibt es viele Möglichkeiten, Apps manuell herunterzufahren. Es macht keinen Sinn, es automatisch zu tun, die meisten Apps verhalten sich gut.

Sie haben meine Frage und eine allgemein geäußerte Position richtig zusammengefasst. Aber hier gibt es ein logisches Problem. Die Antwort "Es ist nicht erforderlich" beantwortet logischerweise nicht die Frage "Wie kann ich ..." Weitere Informationen finden Sie in meiner Bearbeitung meiner Frage.
Es ist kontraproduktiv, Fragen zu beantworten, die wahrscheinlich auf einem Missverständnis beruhen. Es ist, als würde man eine Antwort auf die Frage „Wie kopiere ich Dateien mit dem ddBefehl“ erwarten und sich dann weigern zu akzeptieren, dass dies cpeine bessere Alternative ist. Ich sehe den Sinn darin, jede Frage aus einer Lernperspektive zu beantworten, aber wir wollen auch die Leute, die von außen auf die Frage kommen, nicht durch Suchen und so weiter verwirren.
@ bigbadonk420 - guter Punkt, Fragen mit einer ungültigen Prämisse können oft nicht wirklich beantwortet werden. Aber Ihr Beispiel ist seltsam, da eine Standard-Android-Installation einen dd-Befehl hat, aber keinen cp-Befehl ;-)

Verwenden Sie Llama , eine App, die viele Dinge automatisieren kann, einschließlich des Beendens einer App, wenn Sie zu einer anderen App wechseln. Es erfordert Root, um Apps zu beenden.

Erstellen Sie eine neue Event. Fügen Sie die aufgerufene Bedingung hinzu Active Appund wählen Sie den Status aus App stopped or in background. Wählen Sie die App aus, auf die Sie sich konzentrieren möchten.

Fügen Sie als Nächstes eine Action. Wählen Sie Kill Application (root privileges)und dann erneut Ihre App aus.

Wenn Sie jetzt die App verlassen, wird Llama sie beenden.

Beachten Sie, dass die App möglicherweise andere Startmöglichkeiten hat, z. B. das Starten beim Booten oder das Empfangen eines Textes oder eines anderen Intent, das sie verarbeitet. Um zu verhindern, dass es mit diesen umgeht Intents, verwenden Sie die App Permissions Denied oder verwenden Sie ein benutzerdefiniertes Rom wie CyanogenMod, das die Fähigkeit eingebaut hat. Diese Apps können Berechtigungen für jede App widerrufen (auch hier ist Root erforderlich).

Bearbeiten: Es sieht so aus, als ob die kostenlose Version von Permissions Denied nicht mehr verfügbar ist. Ich kann immer noch auf die Google Play-Seite zugreifen (weil ich sie installiert habe), aber sie ist für neue Benutzer weg. Die kostenpflichtige Version ist jedoch immer noch da.

Es wird nicht empfohlen, Apps zu töten, die im Hintergrund ausgeführt werden, insbesondere Dienste, da dies sofort neu startet und Batteriesaft aufsaugt ... nur meine 2 Cent. ;)
Das OP gibt nicht an, welche Apps sie töten möchten. Wenn Sie beispielsweise Facebook beenden, wird die Akkulaufzeit gespart, da nicht nach Updates gesucht wird. Und es wird nicht automatisch neu gestartet; nur einige Dienste sind dazu in der Lage. Es gibt Situationen, in denen das Töten einer App gut ist.
Ich habe einmal Permissions Denied auf meinem vorherigen Telefon verwendet. Als es gestartet wurde, fing es sofort an, Änderungen vorzunehmen, um die ich nicht gebeten hatte, und destabilisierte mein Telefon. Ich werde diese App nicht mehr verwenden.
Danke für die Antwort. Da ich ein Tasker-Benutzer bin, habe ich eine äquivalente Konfiguration eingerichtet. Es hat jedoch nicht verhindert, dass meine Test-App neu gestartet wurde.

Wenn Sie Ice Cream Sandwich oder Jellybean ausführen, können Sie in die Einstellungen gehen und die App manuell herunterfahren, indem Sie zu den laufenden Apps wechseln. Alternativ können Sie auf die Schaltfläche "Letzte App" klicken und sie vom Bildschirm wischen. Diese Methode erhält jedoch nicht alle Hintergrundprozesse.