lazylifecycle回调是一个简单的框架,可以推迟您的非基本任务,并从屏幕启动路径中进行初始分配,同时维护Android生命周期回调的相同执行保证。
首先抽奖:启动应用程序时,Play Store会跟踪寒冷,温暖和热的发射号码。它通过测量您的应用程序能够绘制第一帧的速度来做到这一点。应用程序可以通过启动器,通知,深链接等启动,并且每个应用程序都可以将用户放入不同的屏幕中。当LogCat上显示“显示”标记时,应用程序被认为已渲染了第一个屏幕。在所有向上回调(例如OnCreate,Onstart和Onresume)返回之后,它总是显示出来。
因此,任何在Ongreate,Onstart和onResume和其他向上回调(不提及诸如OnpoStresume之类的事情)中执行的代码都有可能使屏幕启动时间差。因此,建议从Android生命周期回调中删除可延期代码。
但是我们应该在哪里移动呢?我们可以按需做事,但是并非所有事情都可以移动。例如,您想开始进行N/W呼吁尽快获取图像。在这里,我们不希望它在屏幕的渲染发生时启动,但是屏幕呈现占位符视图时,我们需要启动N/W-DB调用。假设您想加载来自DB的电子邮件的草稿,首先我们要渲染撰写屏幕,然后开始获取草稿。
这些回调的顺序按照Android维护。在一项活动中,OnlazyCreate()将在lazystart()上进行,然后是onlazyresume()。在片段中,OnlazyCreate()将随后是OnViewCreatedLazy(view),然后是Onlazystart(),然后是OnlazyResume()。我想到的一件事是,所有懒惰的回调发生在满足懒惰生命周期经理的触发器之后。他们不会与Android生命周期回调相交。
将以下代码添加到build.gradle文件dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks接口(优先考虑BaseActivity ),并提供该方法的默认实现。onCreate()中创建lazylifecyclemanager的实例。onResume中致电lifecycleManager.activate() ,onPause() lifecycleManager.deactivate() )supportsLazyLifecycleCallbacks()为true 。BaseActivity的其他实现可以覆盖懒惰的生命周期回调并使用它。请参阅下面的代码:
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
}