使用带游标的加载器

时间:2013-04-09 21:04:34

标签: android loader

我想使用CursorLoaders从数据库加载日期,但问题是我不想处理CursorAdapter,或者它决定我希望Cursor原样。

这就是我做的事情

class MyClass implements LoaderCallbacks<Cursor> { 

Cursor mCursor;
...
...
...


@Override
    public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
        if (type == V_TYPE_PART) {
            // load all parts
            return new CursorLoader(getActivity(),
                    PartTableMetaData.CONTENT_URI,
                    PartTableMetaData.TABLE_COLUMNS, null, null,
                    PartTableMetaData._ID + " ASC");
        } 
        return null;
    }

    @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {

        counterPartCursor = arg1;
                //update the UI


    }

    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {

        mCursor= null;

    }
}

现在这个工作正常。我的问题是我正在以正确的方式做到这一点?或者我应该在onLoaderReset ??

中关闭光标

1 个答案:

答案 0 :(得分:2)

不需要关闭游标。设置null将使事情正常工作,因为CursorLoader将负责关闭它。但我可以看到当前代码中的泄漏为

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {

    counterPartCursor = arg1;
            //update the UI


}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {

    mCursor= null;

}

你在counterPartCursor中持有引用并使mCursor为null !!!