Je veux faire du nettoyage dans une vue lorsque l'activité est détruite. Y a-t-il un moyen d'obtenir un rappel dans la vue lorsque l'activité est détruite? J'ai essayé d'utiliser OnDetachechedfromwindow code>, mais je ne suis pas sûr que ce soit correct à faire. P>
3 Réponses :
Avec la compréhension que OnDestroy n'est pas garantie, vous ne pouvez rappeler à votre vue dans la méthode Activités OnDestroy.
Modifier en réponse au commentaire: Vous pouvez obtenir n'importe quelle vue en lui donnant un identifiant dans la mise en page et en appelant FindviewyID. Voici un exemple: p>
layout.xml (indiquant le minimum nu) p> myactivity.java (à nouveau, minimal et supposant des importations appropriées) < / p>
Pouvez-vous élaborer un peu cela. Ma classe de visualisation personnalisée fait partie d'un package séparé et cette vue est définie dans la mise en page XML. Invoquant ainsi quelque chose à la vue de la classe d'activité n'est pas réalisable.
"Alors invoquant quelque chose à la vue de la classe d'activité n'est pas réalisable." Bien sûr que ça l'est. Appelez FOETVIEDBYID () CODE>, obtenez le widget, jettez-le à la classe appropriée et appelez une méthode dessus. Cela étant dit,
OnDetachedfromwindow () code> semble être un choix raisonnable pour moi.
@Commonsware Vous commenciez plus vite que je ne peux éditer. :) BTW, merci pour tout le travail que vous faites. Vos livres / code / réponses ont été inestimables pour moi.
@Commonware: J'écris une bibliothèque qui a des vues personnalisées, au contraire à la rédaction d'une application Android. Je n'ai donc aucun contrôle sur le code de classe d'activité.
@BHUPS: Dans ce cas, stick avec OnDetachedfromwindow () code>, sauf s'il provoque des problèmes.
Si vous souhaitez obtenir un rappel sans avoir à surcharger la vue View.ondetachedfromwindow () Code>, vous pouvez utiliser le
Voir.Ajouter () code>
méthode, qui prend un auditeur de rappel comme un seul paramètre. P>
Etant donné que La vue n'oubliez pas d'enregistrer le filtre d'événement code> une fois que l'événement Destroy est déclenché. P> Affichage code> contient le contexte code>, j'utilise
localBroadcastmanager code> pour cela. Jusqu'à présent, je n'ai pas rencontré de problèmes.
code> écoute
Détruire le filtre d'événement code>. L'activité
code> a ensuite besoin de diffuser
détruire l'événement code>. p>
presenter.destroy() // Your clean-up code here
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)