[英]How can I dependency injection Context with Hilt for ViewModel() in Android Studio?
[英]How can I dependency injection Context into ViewModel using Hilt in Android Studio?
之前,我使用代码 A 将Context
传递给ViewModel
。
现在我希望使用 Hilt 作为依赖注入来传递Context
,
我已阅读文章,代码 B 来自文章。
1:代码 B 是否是将Context
传递给ViewModel
的正确方法?
2:在我看来,为了在Android Studio项目中使用Hilt,我在项目中添加了例如Code C,是否需要在Code B中使用fun provideApplicationContext() = MyApplication()
?
代码 A
class HomeViewModel(private val mApplication: Application, val mRepository: DBRepository) : AndroidViewModel(mApplication) {
...
}
代码 B
class MainViewModel @ViewModelInject constructor(
@ApplicationContext private val context: Context,
private val repository: Repository,
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel() {
...
}
@Singleton
@Provides
fun provideApplicationContext() = MyApplication()
代码 C
@HiltAndroidApp
class MyApplication : Application() {
}
这就是我在视图模型中注入 applicationContext 的方式,它运行良好。
基础应用
@HiltAndroidApp
class BaseApplication: Application()
应用模块
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Singleton
@Provides
fun provideApplication(@ApplicationContext app: Context): BaseApplication{
return app as BaseApplication
}
查看模型
@HiltViewModel
class PendingListViewModel
@Inject
constructor(private val application: BaseApplication)
ViewModel 中的用法
AppCompatResources.getDrawable(application.applicationContext, R.drawable.marker_circle)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.