android - “此字段泄漏上下文对象”警告 Hilt Injection
问题描述
我的问题与此处的这个问题类似,在接受的答案中,该问题已在 2.31.2 版中解决。但是警告对我来说仍然存在,我使用的是 2.37 版。其他答案对我来说仍然不清楚(实际上并未确认发生了什么)。所以这是我的 ViewModel 代码:
@HiltViewModel
class DetailViewModel @Inject constructor(
private val context: Context,
private val repository: VaccineRepository,
) : ViewModel() {
这是提供功能:
@Singleton
@Provides
fun provideApplicationContext(
@ApplicationContext appContext: Context
): Context = appContext
它确实有效,但警告困扰着我。那么,这只是错误警告,我可以压制它还是实际上泄漏了?
解决方案
由于ViewModel
s 旨在在存储活动上下文的活动娱乐中生存,因此会泄漏您的上下文(由于活动的性质很容易破坏)。但是应用程序上下文在整个应用程序中是唯一的,直到整个应用程序被杀死,因此不会有任何实际泄漏,您可以通过添加@SuppressLint("StaticFieldLeak")
到您的DetailViewModel
类来忽略警告。
检查应该考虑您的@ApplicationContext
注释并提出有意义的结果,但它没有。
推荐阅读
- javascript - 未处理的拒绝(TypeError):res.map 不是函数
- python - OpenTracing Python 请求:传播跨度
- java - Java 的正则表达式引擎是否在内部优化了字符类表达式?
- c# - 如何检查我是否在 if 语句中越界?
- sql - Excel VBS/SQL 完全混乱
- java - 将工厂方法放在抽象父类中
- c# - 如何将仅存在于内存中的执行程序集加载到新的 AppDomain 中?
- ios - 核心数据实体中所有对象的属性总和
- javascript - Particles.js 未在连接到本地主机的移动设备上显示
- node.js - 无法读取猫鼬中未定义的属性“用户名”