我有一个游标适配器,只要点击一个视图,logcat就会出现上述错误。我已经在onDestroy()中发布了CursorAdapter的游标。
有没有办法获取有关游标何时打开的信息?
答案 0 :(得分:2)
我一直在寻找相同的东西并且围绕着SDK。
游标终结器查看是否设置了某些调试属性,并在请求时打印出整个堆栈跟踪。 它们可以在Android源代码中的SQLiteDebug.java中找到。
/**
* Controls the stack trace reporting of active cursors being
* finalized.
*/
public static final boolean DEBUG_ACTIVE_CURSOR_FINALIZATION =
Log.isLoggable("SQLiteCursorClosing", Log.VERBOSE);
只需设置属性(使用adb shell)log.tag.SQLiteCursorClosing并再次检查logcat。
setprop log.tag.SQLiteCursorClosing Log.VERBOSE
这可能仅适用于Froyo及更高版本,我没有检查较旧SDK的来源。
答案 1 :(得分:1)
使用startManagingCursor(cursor)代替onDestroy()选项 - 这样更干净,更好。
答案 2 :(得分:0)
初始化光标后,您应该在ListActivity中使用startManagingCursor(c)
。比活动将处理光标而你不必关心它。
答案 3 :(得分:0)
使用startManagingCursor(c)没用,可能会导致其他bug,比如尝试重新查询已经有cloesd的游标,可以使用c.close(),在onPause()中释放CursorAdapter的游标。不在onDestroy()中。 ps:这可能是android4.0中的用户。