Question

Si vous obtenez des données via un curseur et remplissez les données affichées à l'écran, telles que la définition du titre de la fenêtre, dans onStart() ou onResume()?

onStart() semble l'endroit logique car après onStart() l'activité peut être déjà affiche , mais en arrière-plan. Notamment j'avais un problème avec un géré dialogue qui m'a fait repenser. Si l'utilisateur fait pivoter l'écran alors que le dialogue est toujours ouvert, et onCreateDialog() onPrepareDialog() sont appelés entre onStart() et onResume(). Si les besoins de dialogue à se baser sur les données dont vous avez besoin d'avoir les données avant onResume().

Si je ne me trompe pas à propos onStart() alors pourquoi le Bloc-notes par exemple donner un mauvais exemple en le faisant dans onResume()? Voir http://developer.android. com / ressources / samples / NotePad / src / com / example / android / bloc-notes / NoteEditor.html NoteEditor.java ligne 176 (title = mCursor.getString...).

En outre, si mes lancements d'activité autre actvity / Dialog qui modifie les données de mon curseur est suivi. Même dans le cas le plus simple, est-ce que cela veut dire que je dois manuellement mise à jour mon écran précédent (un écouteur pour une boîte de dialogue dans l'activité principale), ou bien que je dois enregistrer un ContentObserver, depuis que je m aucune mise à jour plus les données dans onResume () (si je pouvais le mettre à jour deux fois bien sûr)?

Je sais qu'il est une question fondamentale, mais la boîte de dialogue récemment, à ma grande surprise, m'a fait réaliser cela.

Était-ce utile?

La solution

Pour répondre à votre question sur noteeditor, il suffit de prendre un regard sur les lignes ci-dessus celui que vous citez et vous verrez ...

    // Requery in case something changed while paused (such as the title)
    mCursor.requery();

Le commentaire semble tout expliquer. Bien que je ne l'ai pas passé par l'exemple NotePad moi-même, il semble que l'auteur (s) construisent dans la capacité de récupérer des changements alors que le noteeditor est en pause (puis repris).

GSree explique (alors que je tapais cela), il n'y a pas une bonne ou mauvaise réponse et il dépend simplement de ce qui doit être fait à quel point du cycle de vie d'activité.

Autres conseils

Encore une fois la solution dépend de ce que vous convient le mieux.

Si vous voulez que le curseur soit une fois par application prérempli (et pas pris la peine de tout changement, alors vous pouvez le faire dans onCreate (). Cette méthode est rappelé que si le processus d'application est tué et l'application est réinitialisée .

Si vous voulez que le curseur soit prérempli à chaque fois que le début de la vie visible (la plupart des cas, un service / diffusion appelle votre activité, vous devez utiliser onStart ()

Si vous voulez que le curseur soit prérempli pour chaque avant-plan Lifecyle d'activité, vous devez utiliser onResume (). Donc, si vous avez une boîte de dialogue ou d'une autre modification des informations sous-activité et donc vous voulez recharger le curseur, il est préférable que vous le faites dans onResume (). L'inconvénient de cette méthode est à chaque fois que l'activité est au premier plan le curseur est rechargé.

Espérons que cela montre clairement

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