误报 "SharedPreferences.edit() without a corresponding commit() or apply() call" lint 警告

False positive "SharedPreferences.edit() without a corresponding commit() or apply() call" lint warning

在将 Android Studio 更新为 Bumblebee 2021.1.1 补丁 2 后,我在每个(已经存在的)sharedPreferences.edit() 调用上收到了 lint 警告4.2.1

有趣的是,当我这样使用它时,我收到警告:

sharedPreferences.edit()
.putBoolean("example", true)
.apply()

但是当我将它保存在这样的变量中时,我没有收到任何警告:

val sharedPrefEdit = sharedPreferences.edit()
.putBoolean("example", true)
.apply()

知道为什么会这样吗?
任何想法如何 resolve/prevent 警告而不将此操作不必要地保存在变量中?

在我看来像是一个 lint 错误。

有一个方便的 edit extension function 可让您在 lambda 中进行更新并自动应用更改。更简洁,它会避免这个 lint 警告:

sharedPreferences.edit {
    putBoolean("example", true)
}

如果您的依赖项中没有 androidx.core:core-ktx 库,则需要它。