2013-04-09 44 views
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

+0

CursorAdapter在哪里?我假设这是一个ListView。 – MowDownJoe 2013-04-09 21:25:06

+0

UI中没有listView或CursorAdapter – user4o01 2013-04-09 21:59:13

回答

2

不关闭游标并不是必需的。当CursorLoader负责关闭它时,设置null会使事情发挥作用。但我可以看到泄漏在当前的代码

@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空!