【发布时间】:2021-05-18 20:38:07
【问题描述】:
我正在使用 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"
我仍然遇到这个泄漏错误。
有什么想法吗?
【问题讨论】:
-
如果您需要上下文,为什么不直接使用
AndroidViewModel?虽然不确定 HILT 泄漏。 -
如果您发布代码图片,也请复制/粘贴或直接在帖子中输入实际代码。请参阅Why may I not upload images of code on SO when asking a question?。仅在图片中包含基本文本的帖子可能会因为没有足够的细节而被关闭。
-
您能找到解决方案吗?我遇到了同样的问题,我尝试将依赖项更新到最新版本,但无济于事。
-
不,@WalterBerggren,我做不到。但是我认为您使用这种方式根本不是问题,请查看该帖子的最后一个答案。那家伙做了一个测试,并保证这不是内存泄漏,这只是一个警告。
标签: android kotlin dagger-hilt