Android:我需要关闭Cursor对象吗?

在我的数据库适配器类中,我有很多这样的方法
public long getContactId(final String phoneNumber) throws sqlException {
    final Cursor cur = mDb.rawQuery(
            "select contact_id from contactphones where number=? limit 1;",new String[] { phoneNumber });
    return cur.movetoFirst() ? cur.getLong(0) : -1;
}

我很欣赏这种方法的简洁性.但我不是在调用Cursor.close(),我不确定这是不是问题.是否会关闭Cursor并在Cursor.finalize()中释放其资源?否则我将不得不这样做:

public long getContactId(final String phoneNumber) throws sqlException {
    final Cursor cur = mDb.rawQuery(
            "select contact_id from contactphones where number=? limit 1;",new String[] { phoneNumber });
    final boolean retVal = cur.movetoFirst() ? cur.getLong(0) : -1;
    cur.close();
    return retVal;
}

解决方法

是的,建议在使用该游标对象时关闭游标,以便游标可以在关闭时执行任何保持工作的内容.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...