项目中用到了CursorAdapter,总结如下:
有时候会报这样的错误。比如在tab中有一个activity使用了CursorAdapter,点击tab,停顿会出现这样的异常:java.lang.IllegalStateException: trying to requery an already closed cursor
经过分析。由activity在通过query获取了Cursor之后用startManagingCursor来管理Cursor的生命周期就不会出现这样的异常;
但是在之后的测试中发现,在Build.VERSION.SDK_INT ==11或者以上的版本还会出现这样的错误。只好在Build.VERSION.SDK_INT >=11的版本不管理游标,测试没有问题。
处理如下:
@Override
public void startManagingCursor(Cursor c) {
// To solve the following error for honeycomb:
// java.lang.RuntimeException: Unable to resume activity
// java.lang.IllegalStateException: trying to requery an already closed
// cursor
if (Build.VERSION.SDK_INT < ***Static.VERSON_C) {
super.startManagingCursor(c);
}
}