Question

Je développe pour Android en utilisant les annotations Android.J'ai un objet observable singleton pour lequel je souhaite ajouter une activité en tant qu'observateur.Quelque chose comme ceci :

@EActivity(R.layout.myActivity)
public class MyActivity extends SherlockActivity implements Observer { 

    @Bean //has singleton scope
    protected Observerable o;

    @Override
    public void onCreate() {
        o.registerObserver(this);
    }

    @Override
    public void onDestroy() {
        o.unregisterObserver(this);
    }

    //more code

Ma question concerne la méthode on destroy.Y aura-t-il une situation où Android tue l'activité pendant un état arrêté ou en pause sans appel onDestroy()?Si tel est le cas, mon Observerable pourrait conserver une référence en direct à une activité qui n’est plus utilisée par le système, ce qui n’est pas bon.Ou n'est-ce pas le cas ?Si telle est ma présomption, ce serait de conserver de faibles références à toutes mes activités dans ma liste d'observateurs enregistrés, afin qu'elles puissent être automatiquement désenregistrées.Est-ce une bonne solution ou n'est-elle pas nécessaire ?

Était-ce utile?

La solution

Le système d'exploitation peut tuer votre processus sans appeler onDestroy, mais sinon vous pouvez compter sur l'appel de onDestroy.Donc, à condition que votre observable soit dans le même processus que l'activité, tout va bien.

Autres conseils

Selon le cycle de vie de l'activité sur le Documentation Android, ce cas peut se produire si une autre application doit démarrer et que le système ne dispose pas de suffisamment de mémoire.

Modifier:Eh bien, il semble que le système appellera toujours cette méthode dans ce cas.Je ne suis plus vraiment sûr du workflow...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top