2017-02-14 1 views
1

Est-il nécessaire de détruire le jeton MvxSubscription, même si vous disposez du modèle View dans la méthode Android On Destroy. J'ai une Home View qui est une activité il y a deux fragments Home frag et Map frag associés avec le même Viewview HomeViewmodel Alors quand je navigue vers la carte frag de HomeView et reviens à homeview Viewmodel est détruit et jeton aussi le code pour détruire le jetonEst-il nécessaire de détruire le jeton MvxSubscription, même si vous disposez du Viewmodel dans la méthode Android OnDestroy?

public override void DisposeImpl() 
{   
    _imageClickedToken.Dispose();    
    _commentPostToken.Dispose();   
    _filterArticleToken.Dispose();    
    base.DisposeImpl(); 

} 

mais encore une fois les messages ne sont pas abonnés

Répondre

1

réponse courte, n °

Comme vous pouvez le voir ci-dessous ou sur le site mvvmcross - vous devez conserver une référence, mais vous ne besoin d'appeler disposer. Le GC mettra l'objet hors de portée - par exemple lorsque le ViewModel est éliminé dans votre exemple.

Les souscriptions peuvent être annulées à tout moment en utilisant la méthode Se désabonner sur la IMvxMessenger ou en appelant Dispose() sur le jeton de souscription .

Cependant, dans de nombreux cas, Unsubscribe/Dispose n'est jamais appelé. Au lieu de les auditeurs s'appuient sur l'implémentation WeakReference du MvxSubscriptionToken pour effacer l'abonnement lorsque les objets sont sortis de portée et Garbage Collection se produit.

Cette désabonnement base GC se produit chaque fois que le jeton abonnement retour de Inscription est nettoyé - donc si le jeton ne sont pas stockées, puis un