1

startManagedCursor()が/対db.close()および/またはcursor.close()にどのように作用するのか疑問に思っていますドキュメントを読みましたが、まだあいまいです%-)...そして、startManagedCursor()が非推奨のAPIであることを理解しました> = 11. <android2.3.xで使用する必要があると思います。

コードコメントには2つの質問があります。ありがとう !

SOR!... SO Rocks :)

Cursor c = null;
try {           
        dbHelper.open() ;
        c = dbHelper.getMyRecords() ;
        startManagingCursor(c) ;

        if ( c.moveToFirst() ) {  uberCool (stuff, here) ; }

        dbHelper.close() ;// <** Question 1 : Is cursor also closed here ?

    } catch (Exception e) {

        Log.d ("OOPS", Caught exception: " + e.toString() ) ;

    } finally {
        // ** Question 2 : Is the close() just below redundant 
        //               - will the managed cursor just close when function
        //                 goes out of scope  ?
        if (c != null) c.close() ; 
    }
4

1 に答える 1

1

私の理解では、管理カーソルはアクティビティによって所有されています。ListView内側にあるものを使用しましたListActivity。これの主な理由は、のListView基になるデータソース(私の場合はSQLiteデータベース)でデータが変更されると、のビューが自動的に更新されるためCursorです。それを管理している人が殺されると、Cursorは閉じられると思います。Activityfinallyブロックの呼び出しclose()は冗長である可能性があります。最初に、私の仮定が正しいことと、このコードがいつ実行されるかによって異なります。

于 2013-03-07T01:01:51.440 に答える