2017-10-06 4 views
1

J'ai mis à jour la bibliothèque de support de 24.2.1 à 26.0.0 et j'ai remarqué une différence que je ne suis pas sûr si c'est un bug ou une décision claire de changer.Android onCreateAnimation Cycle de vie

J'utilise des fragments avec des animations personnalisées pour les transitions, et sur l'ancien 24.2.1 du cycle de vie était comme ça

onAttach() 
onCreate() 
onCreateView() 
onCreateAnimation() 
onStart() 
onResume() 

mais sur la 26.0.0, il a changé à

onAttach() 
onCreate() 
onCreateView() 
onStart() 
onResume() 
onCreateAnimation() 

Pour une raison que je ne connais pas, et en regardant à travers les notes de publication de la bibliothèque de soutien, je n'ai rien trouvé qui pourrait être lié à cela. La seule chose qui pouvait être reliée était le ré-ordre des fragments, mais l'événement a mis ce drapeau à vrai ou faux, n'a eu aucun effet.

Maintenant, mes animations sont un peu grincheuses car onResume() s'attendait à ce que certains indicateurs soient activés sur OnAnimationCreated() pour se comporter en conséquence.

heureux de l'aide,

+0

a créé un projet github pour démontrer cette question https://github.com/smlima/createanim/ –

+0

a créé un rapport de bogue quelque temps en arrière, toujours en attente pour eux de répondre –

Répondre

0

Selon Android Documentation sur Fragment,

onCreateAnimation(int transit, boolean enter, int nextAnim) 

ne relève pas de l'état du cycle de vie de Fragment. C'est juste une méthode normale de la classe Fragment qui est appelée quand un fragment charge une animation. Voir aussi this à propos de onCreateAnimation. Il dit

Animation onCreateAnimation (int transit, boolean enter, int nextAnim)
Appelée lorsqu'un fragment charge une animation. Notez que si setCustomAnimations (int, int) a été appelé avec des ressources Animator au lieu de ressources d'animation, nextAnim sera une ressource d'animation.

Je crois, cela signifie la méthode est appelée lorsque vous définissez Animations personnalisé à votre fragment qui peut être avant onStart méthode est triggred dire avant que le fragment est visible ou après.

+1

Je sais que la méthode ne fait pas partie du cycle de vie, mais c'est comme ça, parce que cette méthode a toujours été appelée sur cette séquence, et maintenant elle a changé. Et il est logique d'être appelé avant onResume(). J'ai juste trouvé cette différence et je voulais m'assurer que ce n'était pas un bug ou quelque chose comme ça. Maintenant, je vais mettre à jour mon code pour être indépendant de cette méthode en quelque sorte ... Merci –