大概有两个 fragment :

// Verbose version
val typedArray = context.obtainStyledAttributes(attrs, styleable)
block(typedArray)
typedArray.recycle()
// One-line version
context.obtainStyledAttributes(attrs, styleable).also(block).recycle()

我想知道为什么冗长的代码块在Android Studio中看起来不错,而单行版本突出显示 getsStyledAttributes 并给出以下警告:



有谁知道这仅仅是一个Android Studio的 Lint 检查缺陷,还是单行版本实际上有问题?

最佳答案

这有点猜测,但是我相信这是因为静态分析工具不能保证TypedArray返回的also()obtainedStyledAttributes()返回的实例是同一实例。它看到获得了TypedArray,但不能保证它被回收,因此发出警告。

我会毫不犹豫地称它为短毛绒中的错误(或“缺陷”),但这确实意味着在这种情况下可以忽略警告。

10-04 23:01