有人可以向我解释StaleDataException
07-11 19:58:23.298 E/AndroidRuntime( 1044): Uncaught handler: thread main exiting due to uncaught exception
07-11 19:58:23.368 E/AndroidRuntime( 1044): android.database.StaleDataException: Access closed cursor
07-11 19:58:23.368 E/AndroidRuntime( 1044): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217)
07-11 19:58:23.368 E/AndroidRuntime( 1044): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84)
07-11 19:58:23.368 E/AndroidRuntime( 1044): at android.database.CursorWrapper.getInt(CursorWrapper.java:128)
我们何时以及如何确保对游标进行查询,以及为什么在此异常时失败?
答案 0 :(得分:4)
您正在尝试从已关闭的Cursor
中检索信息。您必须使用isClosed
方法验证光标是否已关闭。
答案 1 :(得分:1)
在不再需要CursorAdapter之前,无法关闭光标。所以你可以在onDestroy()方法中关闭它:
@Override
public void onDestroy() {
super.onDestroy();
//Close the cursor
cursor.close();
//Close the database
database.close();
}
答案 2 :(得分:0)
就我而言,我正在关闭onStop()方法中的光标。事实证明,屏幕的旋转导致此代码运行,从而产生StaleDataException。
答案 3 :(得分:0)
使用Activity.getContentResolver.query()
代替Activity.managedQuery()
。因为managedQuery()
已弃用。它对我有用。