Lazylifecycle Callbacksは、Androidライフサイクルコールバックの同じ実行保証を維持しながら、画面の起動経路からの初期化を延期するための簡単なフレームワークです。
最初の抽選:アプリが起動すると、Play Storeは冷たく、暖かく、熱い発射番号を追跡します。また、アプリが最初のフレームを描画できる速さを測定することでそうします。アプリは、ランチャー、通知、ディープリンクなどを介して開始でき、それぞれがユーザーを異なる画面に着陸させることができます。 「表示された」マーカーがログキャットに表示されると、アプリは最初の画面をレンダリングしたと見なされます。 OnCreate、Onstart、Onresumeなどのすべての上向きのコールバックが戻ってきた後、常に表示されます。
したがって、OnCreate、On -Start、Onresumeで実行されているコード、およびその他の上向きのコールバック(Onpostresumeのようなことは言及されていない)は、画面の起動時間を悪化させる可能性があります。そのため、Androidライフサイクルコールバックから延期可能なコードを削除することをお勧めします。
しかし、どこに移動すればよいですか?私たちはオンデマンドで物事を行うことができますが、すべてをオンデマンドで移動できるわけではありません。たとえば、できるだけ早く画像を取得するためのN/W呼び出しを開始する必要があります。ここでは、画面のレンダリングが行われている間に起動することは望ましくありませんが、モーメント画面がプレースホルダービューでレンダリングすると、n/w-dbコールを起動する必要があります。 DBから電子メールのドラフトをロードすると、最初にCompose画面をレンダリングしてから、ドラフトの取得を開始します。
これらのコールバックの順序は、Androidに従って維持されます。アクティビティでは、onlazycreate()の後にlazystart()が続き、その後にonlazyresume()が続きます。フラグメントでは、onlazycreate()の後にonviewcreatedlazy(view)が続き、その後にonlazyresume()が続きます。心を込めて、怠zyなライフサイクルマネージャーのトリガーが満足した後に怠zyなコールバックがすべて起こることです。彼らは、Androidライフサイクルコールバックとインターレースしません。
以下のコードをbuild.gradleファイルdependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }に追加します
LazyLifecycleCallbacksインターフェイスを実装し( BaseActivityを好む)、メソッドのデフォルトの実装を提供します。onCreate()でlazylifecyclemanagerのインスタンスを作成します。lifecycleManager.activate()をonResumeに連れてください、onPause()でlifecycleManager.deactivate()に電話してくださいsupportsLazyLifecycleCallbacks()をtrueにオーバーライドします。BaseActivityのその他の実装は、怠zyなライフサイクルコールバックをオーバーライドして使用できるようになりました。以下のコードを参照してください:
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
}