4 votes

Comment puis-je fermer une application de manière programmatique ?

Je cherche un code pour un bouton qui ferme complètement mon application.

J'ai essayé avec des trucs de Google, mais mon application tourne toujours en arrière-plan. J'ai besoin de la fermer complètement. Existe-t-il un code qui permet de faire cela ?

7voto

Yoni Samlan Points 21748

Pourquoi devez-vous vraiment fermer votre application ? En supposant qu'il s'agit d'une application normale, qui n'exécute pas de services en arrière-plan ou qui ne détient pas de wakelock (vous le sauriez si vous faisiez ces choses), le système fait un très bon travail de gestion des tâches et fermera votre application si elle est en arrière-plan et qu'elle a besoin de la RAM sans aucune intervention manuelle. Normalement, si vous finish() votre base Activity cela se fera tout seul, mais il n'y a presque jamais de raison de le faire.

(La seule exception à cette règle est si votre Application conserve d'une manière ou d'une autre des références à des activités déjà terminées, ce qui peut provoquer d'affreuses fuites de mémoire et empêcher votre application de se fermer normalement, mais vous saurez probablement aussi si vous faites quelque chose de louche avec une surcharge de Application sous-classe).

C'est-à-dire : 99% du temps, si vous voulez forcer la fermeture de votre application, vous devez soit corriger le bug dans votre code qui vous fait penser que le système ne peut pas s'en occuper tout seul, soit relire le manuel de l'utilisateur. documentation sur le cycle de vie des applications Android encore une fois (parce que vous auriez déjà dû lire ceci 3 fois avant de commencer à écrire une application Android :)).

4voto

prolink007 Points 6712

Ce lien peut peut-être vous aider page du développeur

J'ai cité la partie ci-dessous qui, je pense, pourrait vous aider.

Fermeture des composants

A tant qu'il répond à une requête provenant d'un ContentResolver. Et un récepteur de diffusion n'est actif que actif que lorsqu'il répond à un message message. Il n'y a donc pas besoin de d'arrêter explicitement ces composants.

A l'interface utilisateur. Elles sont dans une conversation de longue haleine avec l'utilisateur l'utilisateur et peuvent rester actives, même lorsqu'elles même lorsqu'elles sont inactives, tant que la conversation continue. De même, les services peuvent également rester actifs pendant une longue période. Android dispose donc de méthodes pour arrêter activités et services de manière ordonnée manière ordonnée :

Une activité peut être arrêtée en appelant sa méthode finish(). Une activité activité peut en arrêter une autre activité (celle qu'elle a démarrée avec startActivityForResult()) en appelant la méthode finishActivity().

Un service peut être arrêté en appelant son stopS appelant Context.stopService().

Les composants peuvent également être fermés par le système lorsqu'ils ne sont plus utilisés ou lorsqu'Android doit récupérer de la mémoire pour des composants plus actifs. Une section ultérieure, intitulée Component cycles de vie des composants, traite de cette possibilité et ses ramifications de manière plus détaillée.

4voto

Sujay Points 338

Vous pouvez fermer toutes les activités en arrière-plan et lorsque vous rouvrez l'application, elle reprend la première activité.

this.finish();
Intent intent = new Intent(getApplicationContext(), CloseApp.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Vous pouvez fermer toutes les activités en arrière-plan et lorsque vous rouvrez l'application, elle démarre à partir de l'activité en pause [où vous avez fermé] l'activité.

    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

1voto

Alex Florescu Points 1480

Android n'aime pas que vous fermiez vos applications. Voici une discussion à ce sujet : Est-il mal vu d'abandonner une application ?

Si vous voulez vraiment le faire, pour quelque raison que ce soit, vous devez fermer toutes vos activités. Voici une discussion sur la façon dont vous pourriez le faire : Fermeture simultanée de plusieurs activités Android

0voto

jclova Points 1083

Avoir à l'esprit que :

finish();

ferme uniquement l'activité en cours. Si vous avez plusieurs activités ouvertes, vous devez appeler finish() par activité.

Note : Le service de clôture est différent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X