Hilt中如何实现每次注入同一类型依赖都返回全新实例?
问题根源
你给AdapterA的Provider方法加了@ActivityScoped作用域注解,该注解的作用就是限定绑定的实例在对应ActivityComponent的整个生命周期内仅初始化一次,同一Activity的所有注入请求都会复用同一个实例,这正好和你要的「每次注入都拿新实例」的需求相悖。
解决方案
直接删掉@ActivityScoped注解即可,无作用域的绑定在Hilt中的默认行为就是:每次发起注入请求、或者每次依赖注入框架需要调用该Provider获取实例时,都会生成一个全新的对象。
修改后的Module代码如下:
@Module @InstallIn(ActivityComponent::class) class AdapterModule { @Provides fun provideAdapterAInstace(): AdapterA { return AdapterA() } }
补充参考:Hilt常见作用域说明
@Singleton:全局Application生命周期内单实例@ActivityScoped:对应Activity生命周期内单实例@FragmentScoped:对应Fragment生命周期内单实例- 无任何作用域注解:每次注入都生成新实例
内容的提问来源于stack exchange,提问作者bitDeveloper
相关产品推荐
相关产品推荐

