CursorAdaptersgoogle docs は、最初のコンストラクターを使用しないことを指摘しています。
CursorAdapter(Context context, Cursor c)
他に2つのオプションしかありません。
CursorAdapter(Context context, Cursor c, boolean autoRequery)
それは言う
自動再クエリを制御できるコンストラクタ。これは使用せず、代わりに CursorAdapter(Context, Cursor, int) を使用することをお勧めします。このコンストラクターを使用すると、FLAG_REGISTER_CONTENT_OBSERVER が常に設定されます。
と
CursorAdapter(Context context, Cursor c, int flags)`
これは、推奨されるコンストラクターであると述べています。
問題は、最後のコンストラクターで使用するフラグがFLAG_AUTO_REQUERY(int 1) とFLAG_REGISTER_CONTENT_OBSERVER(int 2) の 2 つしかないことです。バックグラウンドでの管理と更新に CursorLoader を使用しているため、使用FLAG_AUTO_REQUERYしても意味がありません。ではFLAG_REGISTER_CONTENT_OBSERVER、 を使用する場合は必要ありませんCursorLoader。
今、私はCursorAdapter(Context context, Cursor c, int flags)それが私のでうまく動作するようにするためにどの整数を渡すのCursorAdapterですか? 私が心配しているのは、古いカーソルを正しく管理する方法です。これを行う正しい方法が本当にわかりません。
を使用する場合はFLAG_REGISTER_CONTENT_OBSERVER、 で何かを行う必要がありますonContentChanged()が、 で使用swapCursor()する場合LoaderManagerは、カーソルが閉じていないため、 を実行するだけで済みますadapter.swapCursor(cursor).close()。onContentChanged()しかし、それはinと競合しCursorAdapterますか? 目標は、メモリ リークを発生させず、効率的にすることです。