美文网首页
Jetpack实践 - App Startup

Jetpack实践 - App Startup

作者: 天涯之末 | 来源:发表于2020-09-16 13:13 被阅读0次

App Startup可以在App启动时直接、高效的初始化组件,可以显式设置初始化顺序,允许共用一个ContentProvider以提高启动速度。

配置

dependencies {
    implementation "androidx.startup:startup-runtime:1.0.0-alpha03"
}

在App Startup中初始化组件

创建类实现Initializer<T>接口。

  • create()方法包含所有初始化组件必要的操作。
  • dependencies()方法返回这个initializer依赖的Initializer<T>列表,可以控制Initializer<T>的初始化顺序。没有依赖可传空列表。

WorkManager为例:

class WorkManagerInitializer: Initializer<WorkManager> {
    override fun create(context: Context): WorkManager {
        val configuration = Configuration.Builder().build()
        WorkManager.initialize(context, configuration)
        return WorkManager.getInstance(context)
    }
    override fun dependencies(): List<Class<out Initializer<*>>> {
        return emptyList()
    }
}

设置manifest

App Startup使用InitializationProvider初始化各个initializer,优先检查<meta-data>,然后调用dependencies()初始化发现的initializer。

<provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    android:exported="false"
    tools:node="merge">
    <!-- This entry makes ExampleLoggerInitializer discoverable. -->
    <meta-data  android:name="com.example.ExampleLoggerInitializer"
          android:value="androidx.startup" />
</provider>

相关文章

网友评论

      本文标题:Jetpack实践 - App Startup

      本文链接:https://www.haomeiwen.com/subject/enkfyktx.html