1

私はgetCursorこのように見える独自の方法を作りました

protected Cursor getCursor(String selectQuery) {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    return cursor;
}

cursor.close()返す前に呼び出せないので、このままカーソルを開いたままにしておくのは危険ですか?または、メソッドがオブジェクトを返すとすぐに閉じますか?

4

2 に答える 2

1

アクティビティのライフサイクルでカーソルが必要な場合は、 call を使用しますActivity.startManagingCursor(Cursor c)。それ以外の場合は、カーソルを明示的に閉じる必要があります。

于 2013-09-03T15:58:47.487 に答える
1

ある時点で「TooManyCursorsException」またはそのようなものを取得します。カーソルを使用している場合は、try {} finally{} ブロックを使用して、finally で次のように言うことができます。

if(cursor != null) {
   cursor.close();
}

私は Web プログラミングから、DAO からデータを読み取るときにモデル pojo を作成し、それを上位レベルで使用するために使用されています。カーソルを上のレイヤーに送信することはありません。

于 2013-09-03T15:00:56.307 に答える