Kotlin使用#close后应释放此光标

时间:2019-02-01 23:27:43

标签: android kotlin cursor

使用后如何正确关闭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))
            }
        }

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:4)

        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