欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android在異步任務(wù)中關(guān)閉Cursor的代碼方法

 更新時(shí)間:2013年11月26日 15:53:57   作者:  
android在異步任務(wù)中如何關(guān)閉Cursor?在我們開(kāi)發(fā)應(yīng)用的時(shí)候,很多時(shí)候會(huì)遇到這種問(wèn)題,下面我們就看看代碼如何實(shí)現(xiàn)

查詢數(shù)據(jù)會(huì)比較耗時(shí),所以我們想把查詢數(shù)據(jù)放在一個(gè)異步任務(wù)中,查詢結(jié)果獲得Cursor,然后在onPostExecute (Cursor result)方法中設(shè)置Adapter,我們可能會(huì)想到使用Activity的managedQuery來(lái)生成Cursor,這樣Cursor就會(huì)與Acitivity的生命周期一致了,多么完美的解決方法!然而事實(shí)上managedQuery也有很大的局限性,managedQuery生成的Cursor必須確保不會(huì)被替換,因?yàn)榭赡芎芏喑绦蚴聦?shí)上查詢條件都是不確定的,因此我們經(jīng)常會(huì)用新查詢的Cursor來(lái)替換掉原先的Cursor。因此這種方法適用范圍也是很小。

我們不能直接將Cursor關(guān)閉掉,但是注意,CursorAdapter在Acivity結(jié)束時(shí)并沒(méi)有自動(dòng)的將Cursor關(guān)閉掉,因此,你需要在onDestroy函數(shù)中,手動(dòng)關(guān)閉。

復(fù)制代碼 代碼如下:

@Override
    protected void onDestroy() {
        super.onDestroy();
        mPhotoLoader.stop();
        if(mAdapter != null && mAdapter.getCursor() != null) {
            mAdapter.getCursor().close();
        }
    }

如果沒(méi)有在Adapter中用到Cursor,可以手動(dòng)關(guān)閉Cursor。

復(fù)制代碼 代碼如下:

Cursor cursor = null;
try{
    cursor = mContext.getContentResolver().query(uri,null,null,null,null);
    if(cursor != null){
        cursor.moveToFirst();
    //do something
    }
}catch(Exception e){
    e.printStatckTrace();
}finally{
    if(cursor != null){
        cursor.close();
    }
}

相關(guān)文章

最新評(píng)論