LazyLifecycle Callbacks ist ein einfaches Rahmen, um Ihre nicht wesentlichen Aufgaben und die Initialisierung aus dem Bildschirmstartpfad zu verschieben und gleichzeitig die gleichen Ausführungsgarantien für Android -Lebenszyklus -Rückrufe beizubehalten.
Erster Zeichnen: Wenn die App gestartet wird, verfolgt Play Store die kalten, warmen und heißen Startnummern. Dies geschieht, indem Sie messen, wie schnell Ihre App Ihren ersten Frame zeichnen kann. Die App kann über Launcher, Benachrichtigungen, Deeplinks usw. beginnen, und jeder kann den Benutzer in verschiedenen Bildschirmen landen. Es wird angenommen, dass die App ihren ersten Bildschirm gemacht hat, wenn der angezeigte "angezeigte" Marker auf der Logcat angezeigt wird. Es wurde immer nach all den Aufstiegsaufrufen wie OnCreate, OnStart und OnResume zurückgekehrt.
Jeder Code, der in Oncreate, OnStart und OnResume ausführt, und anderen Aufstiegsrückrufen (ohne Dinge wie OnpoStresume) hat das Potenzial, die Startzeit des Bildschirms schlecht zu machen. Daher ist es ratsam, den auf den Android Lifecycle Callbacks wegweisbaren Code zu entfernen.
Aber wo sollen wir es bewegen? Wir können Dinge auf Nachfrage tun, aber nicht alles kann weiter bewegt werden. Sie möchten beispielsweise die N/W -Forderungen zum Abrufen der Bilder so schnell wie möglich erstellen. Hier möchten wir nicht, dass es beginnt, während das Rendering des Bildschirms stattfindet, aber der Moment Bildschirm macht mit der Platzhalteransicht die N/W-DB-Anrufe. Angenommen, Sie möchten den Entwurf einer E -Mail aus der DB laden. Zuerst möchten wir den Bildschirm komponieren und dann den Entwurf abrufen.
Die Reihenfolge dieser Rückrufe wird gemäß Android gepflegt. In einer Aktivität folgt Onlazycreate () auf LazyStart (), gefolgt von Onlazyresume (). In Fragmenten folgt OnlazyCreate () von OnviewCreatedLazy (View), gefolgt von OnLazyStart (), gefolgt von OnlazyResume (). Eine Sache daran ist, dass alle faulen Rückrufe geschehen, nachdem die Auslöser des faulen Lebenszyklusmanagers zufrieden sind. Sie verbinden sich nicht mit den Android -Lebenszyklus -Rückrufen.
Fügen Sie den folgenden Code den Abhängigkeiten von build.gradle -Dateien hinzu dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks in der Aktivität (bevorzugt eine BaseActivity ) und geben Sie die Standardimplementierungen der Methode an.onCreate() .lifecycleManager.activate() in onResume ,lifecycleManager.deactivate() an onPause()supportsLazyLifecycleCallbacks() to true .BaseActivity können nun die faulen Lebenszyklus -Rückrufe überschreiben und verwenden.Siehe den Code unten:
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
}