Zar*_*rah 9 configuration android rotation cursor
我试图使我的应用程序旋转友好,但我在保存光标时遇到一些问题.
光标在a中显示大约13k +行的数据ListView,因此如果每次配置更改时我都会进行重新查询,则需要很长时间.在我onRetainNonConfigurationInstance(),我正在返回我的光标,然后检索它getLastNonConfigurationInstance().
但是,我检索到的光标似乎已经关闭,因此我的适配器无法再渲染列表.根据我的理解,光标已关闭,因为onDestroy()自动关闭所有光标.
我像这样保存Cursor:
@Override
public Object onRetainNonConfigurationInstance() {
return myCursor;
}
Run Code Online (Sandbox Code Playgroud)
并检索它像这样:
myCursor = (Cursor)getLastNonConfigurationInstance();
if (myCursor == null) {
// Do some stuff here (access DB, etc)
} else { // we are returning from configuration change
// Feed the cursor to the adapter
}
Run Code Online (Sandbox Code Playgroud)
如果有人想看它,我会粘贴堆栈跟踪:
01-25 16:57:45.637: ERROR/AndroidRuntime(12976): android.database.StaleDataException: Access closed cursor
01-25 16:57:45.637: ERROR/AndroidRuntime(12976): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217)
01-25 16:57:45.637: ERROR/AndroidRuntime(12976): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
01-25 16:57:45.637: ERROR/AndroidRuntime(12976): at com.test.sample.helper.DictionaryAdapter.bindView(DictionaryAdapter.java:35)
[........More ListView-related errors here..........]
Run Code Online (Sandbox Code Playgroud)
我逐步完成了代码,我发现onRetainNonConfigurationInstance()光标仍处于打开状态,但在完成后getLastNonConfigurationInstance()它已经关闭了.
如何使我的Cursor在方向更改后继续存在?感谢您的帮助!
编辑:
根据罗曼的回答,我评论了我startManagingCursor()的所有.我应该连接点并思考它!无论如何,我的应用程序现在可以存活一次,但是将其翻转回原始方向仍然会崩溃.继续我的调试,让你知道我发现了什么.
EDIT2:
我想我可能已经找到了导致新错误的原因.我已经实现了一个FilterQueryProvider返回一个新的Cursor.我所做的是将该过滤器的结果分配给我原来的Cursor.到目前为止似乎工作.
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |