【问题标题】:"This field leaks a context object" warning Hilt Injection“此字段泄漏上下文对象”警告 Hilt Injection
【发布时间】:2021-07-14 02:15:42
【问题描述】:

我的问题与这个问题here 类似,在接受的答案中,该问题已在版本 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

它确实有效,但警告让我感到困扰。那么,这只是错误的警告,我可以压制它还是真的泄漏了?

【问题讨论】:

    标签: android kotlin dagger-hilt


    【解决方案1】:

    由于ViewModels 旨在在存储活动上下文的活动娱乐中生存,因此会泄漏您的上下文(由于活动的性质很容易破坏)。但是应用程序上下文在整个应用程序中是唯一的,直到整个应用程序被杀死,因此不会有任何实际泄漏,您可以通过将 @SuppressLint("StaticFieldLeak") 添加到您的 DetailViewModel 类来忽略警告。

    检查应该考虑您的@ApplicationContext 注释并得出有意义的结果,但它没有。

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 2018-04-02
      • 2018-10-17
      • 1970-01-01
      • 2011-11-30
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多