Que signifie le bouton «Forcer l'arrêt»?

26

Quand je vais à Settings > Applications > Manage Applications > Downloadedje vois une liste d'applications. Si je sélectionne certaines applications, je vois le bouton "Forcer l'arrêt" actif, mais certaines applications ont ce bouton grisé.

Qu'est-ce que ça veut dire? Que se passe-t-il si j'appuie sur ce bouton?

Ce bouton ne peut pas signifier l'application en cours d'exécution, car les applications avec ce bouton ne sont pas répertoriées dans la Runningsection.

Puis-je répertorier uniquement les applications dont le Force stopbouton est actif et les désinstaller?


Version Android: 3.2

Suzan Cioc
la source

Réponses:

18

Comme je l'ai dit dans mon commentaire à la réponse de paco, les informations qu'il a fournies sont généralement correctes: la plupart des applications ne se ferment pas complètement si vous les quittez, et aucune application ne devrait se fermer si vous la quittez via le bouton "Accueil". De plus, certaines applications ont des services d'arrière-plan en cours d'exécution que l'utilisateur ne peut pas quitter autrement.

Il y a maintenant des situations où vous avez besoin d'une application (y compris ses services d'arrière-plan) à arrêter - par exemple si vous souhaitez désinstaller cette application (ou, dans le cas d'une application système, ses mises à jour). Vous le remarquerez lorsque le bouton "Force Stop" est actif, le bouton "Désinstaller" (ou "Supprimer") est grisé - mais ce dernier est activé lorsque vous avez arrêté l'application via "Force Stop". (Si les deux boutons sont grisés, vous pouvez dire que c'est une application système, d'ailleurs - que vous ne pouvez pas désinstaller).

Btw: Si le bouton "Forcer l'arrêt" est grisé ("grisé" comme vous le dites), cela signifie que l'application n'est pas en cours d'exécution, ni aucun service en cours d'exécution (à ce moment).

Izzy
la source
1
You will notice this when the "Force Stop" button is active, the "Uninstall" (or "Remove") button is grayed out, pouvez-vous donner un exemple d'application qui présente ce comportement? Je viens de parcourir certaines de mes applications et j'ai constaté que les boutons "Forcer l'arrêt" et "Désinstaller" étaient activés. Je suis sur Android 4.4.2.
cychoi
1
Comme ma réponse a déjà 2 ans, Kitkat n'était pas disponible à l'époque; ce comportement peut avoir changé ou ne pas affecter toutes les applications. Je ne peux pas tester avec Kitkat (aucun appareil exécutant cela), et je ne me souviens pas avec quels paquets j'ai vu cela, désolé.
Izzy
15

Le code derrière le bouton d' arrêt forcé est complexe et non documenté. Je vais le reproduire textuellement, puis le parcourir une pièce à la fois.

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);
    }
}

La première ifligne vérifie si un composant du package est un administrateur de périphérique (c'est-à-dire s'il est vérifié dans la liste Administrateurs de périphériques de la page Sécurité de l' application Paramètres ). Si c'est le cas, le bouton est désactivé (grisé), vous ne pouvez donc pas arrêter les administrateurs de l'appareil.

Ensuite, il else ifvérifie si le package est déjà arrêté . Ici, arrêter ne signifie pas seulement "ne pas courir". Pour autant que je sache, un package est à l' état arrêté si vous n'en avez jamais exécuté de composant (par exemple en le lançant à partir du menu), ou si vous avez appuyé sur un bouton d' arrêt forcé (celui-ci ou une boîte de dialogue "ne fonctionne plus") et ne réexécutez aucun de ses composants. Si le package n'a pas été arrêté, le bouton est activé .

L' elseaffaire couvre la rare éventualité où une application a été arrêtée et n'est pas un administrateur d'appareil. Dans ce cas, cela donne à d'autres services système la possibilité d'activer le bouton. Par exemple, l'application peut avoir une alarme définie et en attente, ce qui entraînerait plus tard le redémarrage de l'application même à partir de l'état arrêté. Dans ce cas, le bouton sera activé. Si aucun autre service système n'a de raison d'activer le bouton, il sera désactivé.

Sommaire

Le bouton Forcer l'arrêt est activé si le package n'est pas un administrateur d'appareil et que vous n'avez pas déjà forcé l'arrêt de cette application ou que vous l'avez forcé mais un service système pense qu'il le réexécutera.

Si l'application est en cours d'exécution (et qu'il ne s'agit pas d'un administrateur d'appareil), le bouton d' arrêt forcé sera définitivement activé, mais le bouton activé ne signifie pas que l'application est en cours d'exécution.

Dan Hulme
la source
C'est formidable que vous nous montriez le code qui détermine si le bouton est affiché ou non. Pour un développeur comme moi, c'est la réponse parfaite. Mais vraiment, ce n'est que la moitié de la réponse. Vous ne montrez pas ce qui se passe lorsque vous appuyez sur le bouton.
John Pankowicz
2

Android maintient 4 types d'applications dans sa mémoire. Je ne me souviens de tout , mais en cours d' exécution et fond en cache sont deux d'entre eux ... (fond en cache est accessible en cliquant sur le bouton du menu matériel lorsque dans la course onglet et en sélectionnant l'option poped up)

Donc, bien qu'il ne soit pas visible dans les processus en cours , il n'est pas entièrement mort.

La plupart du temps, il doit se trouver dans les processus d' arrière-plan mis en cache .

également, à propos des gestionnaires de tâches ... Il n'est pas conseillé de les utiliser car Android a été codé en dur pour gérer les applications efficacement.Les tueurs d'applications / tâches épuisent plutôt la batterie car après le tueur tue les applications, selon l'algorithme Android suivant, ils seront démarrés (et les applications prennent plus de mémoire au démarrage que dans un état idéal), cela devient donc un cycle et vide la batterie.

le bouton de fermeture forcée est donc actif sur la plupart des processus en cours d'exécution et mis en cache et peut exister sur très peu d'applications qui résident dans les deux autres types de processus!

sur d'autres applications, son Greyd Out!

Nirmik
la source
1
Il s'agit de plus de 4 types (voir Comprendre les cycles de vie des applications et des activités Android pour une explication plus détaillée). Mais ces classes n'ont rien à voir avec le bouton "forcer l'arrêt", du moins pas directement (voir ma réponse : un bouton "forcer l'arrêt" actif signifie simplement que l'application elle-même ou l'un de ses services enregistrés est en cours d'exécution).
Izzy
-2

Ce bouton est actif pour les applications en cours d'exécution ou en cours d'exécution depuis le dernier démarrage de votre appareil.

Android ne tue pas totalement les applications lorsque vous en sortez, ce bouton permet de fermer complètement l'application et de la supprimer de la pile (applications en cours d'exécution), ce bouton libère également la mémoire utilisée par l'application.

Il n'y a aucun moyen de lister les applications en cours d'exécution, également les applications en arrière-plan ont ce bouton.

Il existe des applications gratuites pour tuer dans le Play Store, pour gérer automatiquement la mémoire de votre appareil.

pacoespinoza
la source
3
Alors que les informations de base sont correctes: mieux vaut supprimer la partie sur les "tueurs automatiques". Il peut y avoir eu un certain temps où ils étaient nécessaires (avant Android 2.x), mais ils sont absolument contre-productifs et ont principalement un effet négatif sur l'autonomie de la batterie.
Izzy