android - 使用 Hilt : this field leaks a context object 注入(inject)上下文

标签 android kotlin dagger-hilt

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

@AndroidEntryPoint
class HomeFragment : Fragment() {

private val viewModel: HomeViewModel by viewModels()

....

}
这是警告:
Hilt injection viewModel
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"
谢谢!
-- 按照建议,在第一个给出的答案之后进行了编辑:
现在的家庭 fragment 是:
enter image description here
@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"
而且我仍然收到这个泄漏错误。
有什么想法吗?

最佳答案

在我遇到那个警告之后
enter image description here
我决定分析内存以保证该方法会导致内存泄漏,但我发现非常有趣
enter image description here
是的,没有泄漏这只是一个警告,所以不要再关心它了,快乐编码;)

关于android - 使用 Hilt : this field leaks a context object 注入(inject)上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66216839/

相关文章:

java - Azure 离线同步本地存储文档

android - 无法从 java 模块调用 kotlin 模块

generics - Kotlin通用继承如何转换为继承的对象

android - 如何使用 Hilt 将 ViewModel 注入(inject)到 Activity 中?

android - 如何在 CameraX 中镜像 PreviewView?

android - 椭圆大小不适用于 Textview

java - 如何让手机 hibernate ?

kotlin - 如何使用runBlocking等待CoroutineScope完成

android - 注入(inject)工作类时无法实例化工作人员

android - Hilt - 如何注入(inject) ViewModel 接口(interface)?