2010-07-12 50 views
5

谁能给我解释一下这个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) 

何时以及如何做,我们需要确保光标一个requiry,为什么这个异常失败?

回答

4

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

+0

你可以请我建议我解决这个问题的方式。目前我正在得到很多staleDataException,我无法修复它:( – Bytecode 2014-04-23 06:49:09

1

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

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

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

在我的情况下,我正在关闭onStop()方法的游标。事实证明,屏幕的旋转导致此代码运行,并因此给出StaleDataException。

0

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

相关问题