有人可以向我解释这个'StaleDataException`

时间:2010-07-12 20:28:27

标签: android exception staledataexception

有人可以向我解释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 个答案:

答案 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()已弃用。它对我有用。