Was bedeutet die Schaltfläche "Stopp erzwingen"?

26

Wenn ich gehe, Settings > Applications > Manage Applications > Downloadedsehe ich eine Anwendungsliste. Wenn ich einige Anwendungen auswähle, wird die Schaltfläche "Stopp erzwingen" angezeigt, bei einigen Anwendungen ist diese Schaltfläche jedoch abgeblendet.

Was heißt das? Was passiert, wenn ich diesen Knopf drücke?

Diese Schaltfläche kann nicht bedeuten, dass eine Anwendung ausgeführt wird, da die Anwendungen mit dieser Schaltfläche nicht im RunningAbschnitt aufgeführt sind.

Kann ich nur Anwendungen Force stopauflisten, bei denen die Schaltfläche aktiv ist, und diese deinstallieren?


Android-Version: 3.2

Suzan Cioc
quelle

Antworten:

18

Wie in meinem Kommentar zu Pacos Antwort erwähnt, sind die Informationen, die er gegeben hat, größtenteils korrekt: Die meisten Apps werden nicht vollständig beendet, wenn Sie sie verlassen, und keine App sollte beendet werden, wenn Sie sie über die Schaltfläche "Home" verlassen. Darüber hinaus werden in einigen Apps Hintergrunddienste ausgeführt, die der Benutzer ansonsten nicht beenden kann.

In einigen Situationen müssen Sie eine App (einschließlich ihrer Hintergrunddienste) stoppen, z. B. wenn Sie diese App deinstallieren möchten (oder im Fall einer System-App deren Updates). Sie werden dies bemerken, wenn die Schaltfläche "Stopp erzwingen" aktiv ist, die Schaltfläche "Deinstallieren" (oder "Entfernen") abgeblendet ist - letztere wird jedoch aktiviert, wenn Sie die App über "Stopp erzwingen" anhalten. (Wenn beide Schaltflächen abgeblendet sind, können Sie übrigens erkennen, dass es sich um eine System-App handelt, die Sie nicht deinstallieren können.)

Übrigens: Wenn die Schaltfläche "Stopp erzwingen" abgeblendet ist, bedeutet dies, dass die App derzeit nicht ausgeführt wird und (noch) kein Dienst ausgeführt wird.

Izzy
quelle
1
You will notice this when the "Force Stop" button is active, the "Uninstall" (or "Remove") button is grayed outKönnen Sie eine Beispiel-App nennen, die dieses Verhalten aufweist? Ich habe gerade einige meiner Apps durchgesehen und festgestellt, dass die Schaltflächen "Stop erzwingen" und "Deinstallieren" aktiviert sind. Ich bin auf Android 4.4.2.
Cychoi
1
Da meine Antwort bereits 2 Jahre alt ist, war Kitkat damals nicht verfügbar; Dieses Verhalten hat sich möglicherweise geändert oder wirkt sich nicht auf alle Apps aus. Ich kann nicht mit Kitkat testen (kein Gerät, auf dem das läuft), und ich kann mich nicht erinnern, mit welchen Paketen ich das gesehen habe, sorry.
Izzy
15

Der Code hinter der Schaltfläche " Stopp erzwingen" ist komplex und nicht dokumentiert. Ich reproduziere es wörtlich und gehe es dann Stück für Stück durch.

private void checkForceStop() {
    if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
        // User can't force stop device admin.
        updateForceStopButton(false);
    } else if ((mAppEntry.info.flags&ApplicationInfo.FLAG_STOPPED) == 0) {
        // If the app isn't explicitly stopped, then always show the
        // force stop button.
        updateForceStopButton(true);
    } else {
        Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
                Uri.fromParts("package", mAppEntry.info.packageName, null));
        intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { mAppEntry.info.packageName });
        intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
        intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppEntry.info.uid));
        getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
                Activity.RESULT_CANCELED, null, null);
    }
}

In der ersten ifZeile wird geprüft, ob eine Komponente des Pakets ein Geräteadministrator ist ( dh , ob sie in der Liste der Geräteadministratoren auf der Seite Sicherheit der App Einstellungen aktiviert ist). In diesem Fall ist die Schaltfläche deaktiviert (ausgegraut), sodass Sie Geräte-Administratoren nicht stoppen können.

Anschließend wird else ifgeprüft, ob das Paket bereits gestoppt ist . Angehalten heißt hier nicht nur "nicht rennen". Soweit ich das beurteilen kann, befindet sich ein Paket im gestoppten Zustand, wenn Sie noch nie eine Komponente ausgeführt haben (z. B. indem Sie sie über das Menü starten) oder wenn Sie eine Schaltfläche zum Erzwingen des Stopps gedrückt haben (diese oder diese) ein "funktioniert nicht mehr" -Dialog) und führen Sie keine seiner Komponenten erneut aus. Wenn das Paket nicht gestoppt wurde, ist die Schaltfläche aktiviert .

Der elseFall deckt den seltenen Fall , dass eine Anwendung wird gestoppt worden und ist kein Vorrichtungs - Administrator. In diesem Fall können andere Systemdienste die Schaltfläche aktivieren. Beispielsweise könnte für die App ein Alarm eingestellt und anstehend sein, wodurch die App später selbst aus dem gestoppten Zustand heraus erneut gestartet wird. In diesem Fall wird die Schaltfläche aktiviert. Wenn kein anderer Systemdienst einen Grund hat, die Schaltfläche zu aktivieren, wird sie deaktiviert.

Zusammenfassung

Die Schaltfläche " Stopp erzwingen" ist aktiviert, wenn das Paket kein Geräteadministrator ist und Sie diese App entweder noch nicht erzwungen oder erzwungen haben, aber ein Systemdienst denkt, dass sie erneut ausgeführt wird.

Wenn die App ausgeführt wird (und kein Geräteadministrator ist), ist die Schaltfläche " Stopp erzwingen" definitiv aktiviert. Die aktivierte Schaltfläche bedeutet jedoch nicht, dass die App ausgeführt wird.

Dan Hulme
quelle
Schön, dass Sie uns den Code zeigen, der bestimmt, ob die Schaltfläche angezeigt wird oder nicht. Für einen Entwickler wie mich ist das die perfekte Antwort. Aber das ist wirklich nur die halbe Antwort. Sie zeigen nicht, was passiert, wenn Sie tatsächlich die Taste drücken.
John Pankowicz
2

Android speichert 4 Arten von Anwendungen. Ich habe nicht alles erinnern , aber läuft und zwischengespeichert Hintergrund ist zwei von ihnen ... (gecached Hintergrund kann durch Klicken auf die Hardware-Menü - Taste , wenn in den zugegriffen wird ausgeführt Registerkarte und wählen Sie die poped up - Option)

Es ist also nicht ganz tot, obwohl es in den laufenden Prozessen nicht zu sehen ist.

Meistens wird es in den zwischengespeicherten Hintergrundprozessen sein.

Über Task-Manager wird ebenfalls abgeraten, diese zu verwenden, da Android für eine effiziente Verwaltung von Apps hartcodiert wurde. App / Task-Killer entladen den Akku eher, da sie gestartet werden, nachdem der Killer Apps getötet hat. Dies entspricht dem Algorithmus, den Android befolgt wieder! (und Apps verbrauchen beim Start etwas mehr Speicher als im Idealzustand) Dadurch wird es zu einem Zyklus und entlädt den Akku.

Daher ist die Schaltfläche "Schließen erzwingen" bei den meisten ausgeführten und zwischengespeicherten Prozessen aktiv und kann bei einigen wenigen Apps vorhanden sein, die sich in den beiden anderen Prozesstypen befinden!

auf anderen apps ist es ausgegraut!

Nirmik
quelle
1
Es sind mehr als 4 Typen ( eine genauere Erläuterung finden Sie unter Grundlegendes zu Android-Anwendungen und -Aktivitätszyklen ). Aber diese Klassen haben nichts mit dem "Force Stop" -Button zu tun, zumindest nicht direkt (siehe meine Antwort : Ein aktiver "Force Stop" -Button bedeutet einfach, dass entweder die App selbst oder einer ihrer registrierten Dienste gerade ausgeführt wird).
Izzy
-2

Diese Schaltfläche ist für Apps aktiv, die seit dem letzten Start des Geräts ausgeführt wurden oder ausgeführt werden.

Android tötet die Apps nicht vollständig, wenn Sie es beenden. Diese Schaltfläche dient dazu, die App vollständig zu schließen und vom Stapel zu entfernen (Apps werden ausgeführt). Außerdem gibt diese Schaltfläche den von der App verwendeten Speicher frei.

Es gibt keine Möglichkeit, die laufenden Apps aufzulisten, auch die im Hintergrund laufenden Apps haben diese Schaltfläche.

Es gibt kostenlose Killer-Apps im Play Store, mit denen Sie den Speicher Ihres Geräts automatisch verwalten können.

pacoespinoza
quelle
3
Während die grundlegenden Informationen korrekt sind: Besser den Teil über die "automatischen Mörder" entfernen. Es mag einige Zeit gedauert haben, als sie benötigt wurden (vor Android 2.x), aber sie sind absolut kontraproduktiv und wirken sich meist negativ auf die Akkulaufzeit aus.
Izzy