android - 在哪里关闭光标?

标签 android memory-leaks cursor

我有一个在以下代码中使用的光标。但我想在使用并且不再需要游标后将其关闭。问题是游标在 return 语句中使用,但我无法在 return 语句之后关闭它,因为这是无法访问的代码。它用在 return 语句中,所以我无法在该行上方关闭它。如何关闭光标?这与旧的 ManagedQuery 不同,我假设您必须关闭它。

   public String getPath(Uri uri) {
    String[] projection = { MediaStore.Audio.Media.DATA };
    Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
      // cursor.close() <--- not possible because it is unreachable code after return
}

最佳答案

您可以将其分配给一个 String 对象,然后关闭光标并返回它。

cursor.moveToFirst();
String result = cursor.getString(column_index);
cursor.close();
return result;

关于android - 在哪里关闭光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837819/

相关文章:

c++ - 在opencv中使用CascadeClassifier的detectMultiScale是否会泄漏内存?

css - 如何动态更改CSS光标vuejs

java - 通过线程在 TextView 中闪烁光标

android - Firebase 动态链接未打开应用

java - 在应用程序关闭后保持连接广播接收器运行

android - 如何获取未缓存在 android 线圈中的新图像?

javascript - nodejs websocket 服务器中的内存泄漏

android - 所有 com.android.support 库必须使用相同版本的 appcompat-v7 :28. 0.0

c++ - VS2017 中的_crtBreakAlloc

ajax - TinyMCE 将光标返回到预先保存的位置——API 4