首页 > 解决方案 > Kotlin 这个游标应该在使用 #close 后被释放

问题描述

使用后如何正确关闭 Kotlin 中的光标。我知道如何在 Java 中做到这一点,但不管我在 Kotlin 中做什么,它仍然会发出警告以关闭它。

我试过了:

        val cursor = context!!.getContentResolver().query(DbProvider.CONTENT_URI_VERSES, null, where, null, null)!!
        if (cursor.moveToFirst()) {
            try {
                arabicTextTV.text = cursor.getString(cursor.getColumnIndex(DbHelper.COL_ARABIC1))
            } finally {
                cursor.close()
            }
        }

和现代的方式:

        val cursor = context!!.getContentResolver().query(DbProvider.CONTENT_URI_VERSES, null, where, null, null)!!
        if (cursor.moveToFirst()) {
            cursor.use {
                arabicTextTV.text = cursor.getString(cursor.getColumnIndex(DbHelper.COL_ARABIC1))
            }
        }

在此处输入图像描述

在此处输入图像描述

标签: androidkotlinandroid-cursor

解决方案


context?.contentResolver?.query(DbProvider.CONTENT_URI_VERSES, null, where, null, null)?.use {
  if (it.moveToFirst()) {
    arabicTextTV.text = it.getString(it.getColumnIndex(DbHelper.COL_ARABIC1))
  }
}

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/use.html


推荐阅读