5

有人可以向我解释一下吗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)

我们何时以及如何确保对游标的要求,以及为什么会因此异常而失败?

4

4 回答 4

4

您正在尝试从Cursor已关闭的 a 中检索信息。isClosed您必须使用该方法验证游标是否关闭。

于 2010-07-12T20:31:08.743 回答
1

在不再需要 CursorAdapter 之前,您无法关闭光标。所以你可以在 onDestroy() 方法中关闭它:

@Override
public void onDestroy() {
 super.onDestroy();

     //Close the cursor
     cursor.close();
     //Close the database
     database.close();
    }
于 2014-08-25T09:06:58.483 回答
0

就我而言,我在 onStop() 方法中关闭了光标。事实证明,屏幕的旋转导致此代码运行,因此产生了 StaleDataException。

于 2016-05-04T15:57:55.980 回答
0

使用Activity.getContentResolver.query()而不是Activity.managedQuery(). 因为managedQuery()已弃用。这个对我有用。

于 2017-03-24T09:25:16.640 回答