1
sqliteのある時点で開いているカーソルをすべて表示するオプションはありますか? これを行うためのいくつかの関数があることは知っています(データベースへのすべての接続を見るには...)sqliteで開いているカーソルのリストを印刷するには?
しかし、私はsqliteを使って何ができますか?
sqliteのある時点で開いているカーソルをすべて表示するオプションはありますか? これを行うためのいくつかの関数があることは知っています(データベースへのすべての接続を見るには...)sqliteで開いているカーソルのリストを印刷するには?
しかし、私はsqliteを使って何ができますか?
この情報を直接取得する方法はありません。あなたが行うことができるのは、Cursor
の独自のサブクラスを作成して、現在開いているCursor
を静的リストで追跡することです。例えば
(擬似コード、テストされていない):
public class TrackingCursor extends SQLiteCursor {
private static List<Cursor> openCursors = new LinkedList<Cursor>();
public TrackingCursor(SQLiteDatabase db, SQLiteCursorDriver driver,
String editTable, SQLiteQuery query) {
super(db, driver, editTable, query);
openCursors.add(this);
}
public void close() {
openCursors.remove(this);
}
public static List<Cursor> getOpenCursors() {
return openCursors;
}
}
あなたのTrackingCursor
のではなく、プレーンSQLiteCursor
秒で作成されるように、DBに独自の工場を供給する必要があります。
public class TrackingCursorFactory implements SQLiteDatabase.CursorFactory {
Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
String editTable, SQLiteQuery query) {
return new TrackingCursor(db, masterQuery, editTable, query);
}
}
そして最後に、あなたがopenDatabase
を呼び出し、パラメータとして工場を渡すことで、このファクトリを使用してDBに伝えます。