有人可以解释一下这个`StaleDataException`吗?

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

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


你能否建议我一个不错的方法来解决这个问题。目前我遇到了很多StaleDataException,但是我无法解决它 :( - Bytecode

1

在不再需要CursorAdapter时,才能关闭游标。因此,您可以在onDestroy()方法中关闭它:

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

     //Close the cursor
     cursor.close();
     //Close the database
     database.close();
    }

0

使用 Activity.getContentResolver.query() 代替 Activity.managedQuery()。因为 managedQuery() 已经被弃用了。对我有用。


0
在我的情况下,我是在onStop()方法中关闭游标。结果发现屏幕旋转导致该代码运行,从而引发了StaleDataException异常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接