1

データベースから日付をロードするために使用したいのです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または、 ??でカーソルを閉じるなど、何か他のものを作成する必要があります。

4

1 に答える 1

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 にしています!!!

于 2013-10-01T05:56:27.320 に答える