使用Hilt注入上下文:此字段泄漏上下文对象

塔西拉·科斯塔隆加(Tarsila Costalonga)

我正在使用Hilt将上下文和其他依赖项注入到HomeViewModel类中。一切正常,但我收到此警告。如何防止泄漏?

这是我的HomeFragment(我在其中注入和使用HomeViewModel类):

@AndroidEntryPoint
class HomeFragment : Fragment() {

private val viewModel: HomeViewModel by viewModels()

....

}

这是警告:

刀柄注射视图模型

class HomeViewModel @ViewModelInject constructor(
    @ApplicationContext val context: Context,
    private val locationAPI: LocationAPI,
    private val imagesAPI: ImagesAPI
) :
    ViewModel() {
...
}

我正在使用:

//Hilt DI
implementation "com.google.dagger:hilt-android:2.30.1-alpha"
kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha02"
kapt "androidx.hilt:hilt-compiler:1.0.0-alpha02"

谢谢!

-在第一个给出的答案之后根据建议进行编辑:

现在,“家庭片段”为:

在此处输入图片说明

@HiltViewModel
class DetailsViewModel @Inject constructor(
    @ApplicationContext val context: Context,
    private val locationDetailsAPI: LocationAPI) :
    ViewModel() {
...

}

依赖关系已更新为:

//Hilt DI
implementation "com.google.dagger:hilt-android:2.31-alpha"
kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
kapt "androidx.hilt:hilt-compiler:1.0.0-alpha03"

而且我仍然收到这个泄漏的错误。

有任何想法吗?

迈克·布莱克

我没有收到此警告,而是以相同的方式注入上下文。

尝试更新为hilt的2.31.2-alpha和hilt-androidx的1.0.0-alpha03

有一些重大变化。您将需要使用@HiltViewModel注释视图模型,使用@Inject而不是@ViewModelInject。并且您将需要用SingletonComponent替换对ApplicationComponent的所有引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章