Les rappels Lazylifecycle sont un cadre simple pour reporter vos tâches non essentielles, et les initialisations hors du chemin de lancement de l'écran tout en conservant les mêmes garanties d'exécution des rappels de cycle de vie Android.
Premier tirage: Lorsque l'application est lancée, Play Store suit les numéros de lancement froids, chauds et chauds. Et il le fait en mesurant la vitesse à laquelle votre application est en mesure de dessiner votre première trame. L'application peut démarrer via Launcher, Notifications, DeepLinks, etc., et chacun pourrait atterrir l'utilisateur dans différents écrans. L'application est considérée comme ayant rendu son premier écran lorsque le marqueur "affiché" est affiché sur le logcat. Cela a toujours montré après tous les rappels vers le haut tels que OnCreate, Onstart et OnResume sont revenus.
Ainsi, tout code qui s'exécute dans OnCreate, OnStart et ONRESUME, et d'autres rappels ascendants (sans mentionner des choses comme Onpostreume) a le potentiel de rendre le temps de lancement de l'écran mauvais. Ainsi, il est conseillé de supprimer le code différemment loin des rappels du cycle de vie Android.
Mais où devons-nous le déplacer? Nous pouvons faire les choses à la demande, mais tout ne peut pas être déplacé sur le plan. Par exemple, vous souhaitez commencer à passer les appels N / W pour récupérer les images dès que possible. Ici, nous ne voulons pas qu'il commence pendant que le rendu de l'écran se produit, mais l'écran du moment se rend avec la vue d'espace réservé, nous devons commencer les appels N / W-DB. Supposons que vous souhaitiez charger le brouillon d'un e-mail de la base de données, nous aimerions d'abord rendre l'écran de composition, puis commencer à récupérer le projet.
L'ordre de ces rappels est maintenu selon Android. Dans une activité, OnlazyCreate () sera suivi de sur LazyStart (), suivi de OnlazyResume (). En fragments, OnlazyCreate () sera suivi par OnViewCreatedlazy (vue), suivi de OnlazyStart () suivi de OnlazyResume (). Une chose à l'esprit est que tous les rappels paresseux se produisent après que les déclencheurs du gestionnaire de cycle de vie paresseux sont satisfaits. Ils ne s'entrelacent pas avec les rappels de cycle de vie Android.
Ajoutez le code ci-dessous à la build.gradle File dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks dans l'activité (préférable une BaseActivity ) et fournissent les implémentations par défaut de la méthode.onCreate() .lifecycleManager.activate() dans onResume ,lifecycleManager.deactivate() dans onPause()supportsLazyLifecycleCallbacks() à true .BaseActivity peuvent désormais remplacer les rappels de cycle de vie paresseux et l'utiliser.Voir le code ci-dessous:
abstract class BaseActivity : AppCompatActivity (), LazyLifecycleCallbacks {
protected lateinit var lazyLifecycleManager : LazyLifecycleManager
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
lazyLifecycleManager = ViewBasedLazyLifecycleManager ( this )
}
override fun onResume () {
super .onResume()
lazyLifecycleManager.activate()
}
override fun onPause () {
super .onPause()
lazyLifecycleManager.deactivate()
}
override fun onLazyCreate () {}
override fun onLazyStart () {}
override fun onLazyResume () {}
override fun supportsLazyLifecycleCallbacks (): Boolean = false
}