173 votes

Que fait exactement la méthode Activity.finish() ?

Je développe des applications Android depuis un certain temps, et j'ai suivi de nombreux posts sur le cycle de vie des activités, et le cycle de vie des applications.

Je sais que Activity.finish() fait appel quelque part à la méthode Activity.onDestroy() Je suppose que cela indique au système d'exploitation et au ramasse-miettes qu'il peut "faire son truc" et libérer la mémoire lorsqu'il le juge opportun....

Je suis arrivé à ce poste - Est-il mal vu de quitter une application ? et lisez la réponse de Mark Murphy.

Cela m'a rendu un peu confus quant à la nature exacte de la finish() est en fait le résultat de cette méthode.

Y a-t-il une chance que j'appelle finish() y onDestroy() ne sera pas appelé ?

1voto

Faiz Alam Points 11

Roomex l'a bien dit !

Ce qui m'est arrivé, c'est que je travaillais sur une application qui nécessite l'utilisation de la classe d'écoute Bluetooth. Un fragment de la page d'accueil appelait une activité qui utilisait également la classe BluetoothListner. J'ai utilisé la classe startActivityForResult() pour obtenir un accusé de réception. Le problème est qu'après avoir reçu l'accusé de réception du fragment, lorsque j'essaie d'écouter le port Bluetooth, le canal d'activités est toujours actif. Même si je l'ai spécifiquement fermé onDestroy() méthode. J'y ai passé des jours, mais je n'ai pas réussi à m'arrêter.

Je me suis dit que si je n'utilisais pas startAcivityForResult() et utiliser simplement startActivity() avec et sans le terminer() appelée qui pourrait potentiellement résoudre le problème. Bien entendu, si j'appelle terminer() à l'intérieur du fragment, l'activité devra rappeler l'activité principale avec la vue de navigation et pointer vers le fragment. de cette manière, une toute nouvelle instance de l'activité principale sera potentiellement créée. Ou sans utiliser terminer() tout en appelant l'activité onDestroy() sera invoquée pour l'activité et la méthode onResume() sera appelée dès que nous y reviendrons.

-5voto

kapil Points 1

Finish () renvoie simplement à l'activité précédente dans Android, ou peut-être pouvez-vous dire qu'il fait un pas en arrière dans l'application.

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