Auf was muss CursorAdapter (Kontextkontext, Cursor c, int Flags) eingestellt werden, damit es mit CursorLoader funktioniert?

Die Google Docs weisen darauf hin, das nicht zu verwendenCursorAdapters erster konstruktor,

CursorAdapter(Context context, Cursor c)

Es gibt nur zwei andere Möglichkeiten,

CursorAdapter(Context context, Cursor c, boolean autoRequery)

was sagt

Konstruktor, der die Kontrolle über die Auto-Requery ermöglicht. Es wird empfohlen, dies nicht zu verwenden, sondern CursorAdapter (Context, Cursor, int). Bei Verwendung dieses Konstruktors wird immer FLAG_REGISTER_CONTENT_OBSERVER gesetzt. "

und

CursorAdapter(Context context, Cursor c, int flags)`

was besagt, dass es der empfohlene Konstruktor ist.

Das Problem ist, dass es hier nur zwei Flags gibt, die mit dem letzten Konstruktor verwendet werden können.FLAG_AUTO_REQUERY(int 1) undFLAG_REGISTER_CONTENT_OBSERVER(int 2). VerwendenFLAG_AUTO_REQUERY macht keinen Sinn, weil ich jetzt einen CursorLoader verwende, um ihn im Hintergrund zu verwalten und zu aktualisieren. MitFLAG_REGISTER_CONTENT_OBSERVER, es sagt, dass es nicht benötigt wird, wenn es verwendet wirdCursorLoader.

Jetzt frage ich, welche Ganzzahl ich übergebeCursorAdapter(Context context, Cursor c, int flags) damit es mit meinem gut funktioniertCursorAdapter? Was mich beunruhigt, ist, wie man den alten Cursor richtig verwaltet. Ich bin mir nicht sicher, wie ich das richtig machen soll.

Wenn ich benutzeFLAG_REGISTER_CONTENT_OBSERVER, dann muss ich was mit machenonContentChanged(), aber bei der VerwendungswapCursor() in meinemLoaderManager, da der cursor nicht geschlossen ist, könnte ich einfach machenadapter.swapCursor(cursor).close(). Aber würde das widersprechenonContentChanged() imCursorAdapter? Ziel ist es, keine Speicherlecks zu verursachen und effizient zu sein.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage