AndroidDagger-动态功能模块无法从AppComponent注入
创始人
2024-10-06 22:32:21
0

当在动态功能模块中使用Dagger注入时,需要将依赖项注入到具有不同生命周期的组件中。 在这种情况下,您无法直接从全局的AppComponent中注入依赖项。

一种解决方法是创建一个子组件,该子组件仅作用于动态功能模块。 以下是示例代码:

//在动态功能模块中创建 Module 和 Component @Module class MyDynamicModule { // provide dependencies here }

@DynamicScope @Component( dependencies = [AppComponent::class], modules = [MyDynamicModule::class] ) interface MyDynamicComponent { // let the dynamic feature inject into itself fun inject(myDynamicFeature: MyDynamicFeature) }

//在AppComponent中暴露 DynamicComponent interface AppComponent { fun exposeDynamicComponent(): MyDynamicComponent }

//在 Application 中初始化全局的 AppComponent class MyApplication : Application() { private lateinit var appComponent: AppComponent

override fun onCreate() {
    super.onCreate()
    appComponent = DaggerAppComponent.builder()
        // set global dependencies here
        .build()
}

fun getAppComponent(): AppComponent {
    return appComponent
}

}

//在动态功能模块中使用 class MyDynamicFeature : Fragment() { override fun onAttach(context: Context) { super.onAttach(context) // obtain the dynamic component from the activity, then inject into self (requireActivity() as HasAppComponent) .getAppComponent() .exposeDynamicComponent() .inject(this) } }

// 状态变量保存当前动态功能模块是否加载,建议在Activity中最先声明和初始化。 private val hasDynamicFeature = mutableMapOf()

// 在 Activity 中判断并加载动态功能模块(如果已经加载过则跳过),并提供对应的子组件实例,用以注入依赖。 class MainActivity : AppCompatActivity(), HasAppComponent { private lateinit var dynamicComponent: MyDynamicComponent

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate

相关内容

热门资讯

透视练习!newpoker脚本... 透视练习!newpoker脚本(透视)epoker透视(辅助)一贯一直都是有插件(哔哩哔哩)1、任何...
目前!菠萝德普辅助器免费版在哪... 目前!菠萝德普辅助器免费版在哪里(透视)兴动互娱技巧(果然是真的辅助下载)-哔哩哔哩1、下载好兴动互...
经核实!wepoker辅助软件... 经核实!wepoker辅助软件视频(透视)金虎爷有挂吗(其实有辅助插件)-哔哩哔哩1、在wepoke...
透视积累!红龙poker辅助(... 透视积累!红龙poker辅助(透视)pokerrrr2辅助(辅助)果然一直总是有工具(哔哩哔哩);1...
现有关情况通报如下!pokem... 现有关情况通报如下!pokemmo手机脚本辅助器(透视)透视辅助功能插件(好像真的是有辅助工具)-哔...
透视步骤!werplan怎么作... 透视步骤!werplan怎么作必弊(透视)拱趴大菠萝有挂吗(辅助)切实是有方法(哔哩哔哩)1、玩家可...
随着!扑克之星辅助(透视)浙江... 随着!扑克之星辅助(透视)浙江温州游戏辅助器(真是真的是有辅助工具)-哔哩哔哩1、浙江温州游戏辅助器...
透视学习!epoker免费透视... 透视学习!epoker免费透视脚本(透视)werplan免费挂下载(辅助)都是真的是有插件(哔哩哔哩...
据权威媒体报道!we poke... 据权威媒体报道!we poker游戏下(透视)创思维激k看底牌辅助开发商(原来有辅助神器)-哔哩哔哩...
透视演示!德州局透视(透视)i... 透视演示!德州局透视(透视)impoker辅助(辅助)切实一直总是有教程(哔哩哔哩)1、金币登录送、...