问题标签 [staledataexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
646 浏览

java - 为什么我的 ListView 方法会引发“陈旧对象状态”异常?

目前在我的应用程序中,当我调用从我的数据库中更新 ListView 的方法时,我遇到了一个过时的对象异常。

在查询我的数据库时,我一直小心地关闭所有游标,当通过使用“startManagingCursor”返回游标时,我也管理我的游标,但我仍然遇到这个问题。

目前,当我向我的数据库添加一个新项目时,我想起了我类的私有方法中的 ListView 更新方法。这是对象抛出异常的地方。

我读过人们“刷新”会话,而且我相信数据库版本会出现这种情况?但总的来说,我被卡住了,无法解决这个问题。

更新错误:

02-13 13:23:06.588: E/AndroidRuntime(287): 致命异常: main 02-13 13:23:06.588: E/AndroidRuntime(287): android.database.StaleDataException: 访问关闭游标 02-13 13: 23:06.588: E/AndroidRuntime(287): 在 android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217) 02-13 13:23:06.588: E/AndroidRuntime(287): 在 android.database.AbstractWindowedCursor.getInt (AbstractWindowedCursor.java:84) 02-13 13:23:06.588: E/AndroidRuntime(287): at com.example.flybase2.ShoppingList.updateTotal(ShoppingList.java:248) 02-13 13:23:06.588: E /AndroidRuntime(287): 在 com.example.flybase2.ShoppingList.access$1(ShoppingList.java:231) 02-13 13:23:06.588: E/AndroidRuntime(287): 在 com.example.flybase2.ShoppingList$2。 onClick(ShoppingList.java:350) 02-13 13:23:06.588: E/AndroidRuntime(287): at com.android。internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 02-13 13:23:06.588: E/AndroidRuntime(287): at android.os.Handler.dispatchMessage(Handler.java:99) 02-13 13:23:06.588: E/AndroidRuntime(287): 在 android.os.Looper.loop(Looper.java:123) 02-13 13:23:06.588: E/AndroidRuntime(287): 在 android.app.ActivityThread .main(ActivityThread.java:4627) 02-13 13:23:06.588: E/AndroidRuntime(287): at java.lang.reflect.Method.invokeNative(Native Method) 02-13 13:23:06.588: E/ AndroidRuntime(287): at java.lang.reflect.Method.invoke(Method.java:521) 02-13 13:23:06.588: E/AndroidRuntime(287): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller .run(ZygoteInit.java:868) 02-13 13:23:06.588: E/AndroidRuntime(287): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-13 13:23 :06.588:E/AndroidRuntime(287): 在 dalvik.system.NativeStart.main(Native Method)

这是我调用 ListView 的类:

这是从数据库返回的游标:

0 投票
2 回答
1248 浏览

android - 除了过早调用 cursor.close() 之外,还有什么会导致 StaleDataException?

我目前正在大量修改/重写一个Android应用程序,并且我看到了一个非常偶然的崩溃,如下所示:调用了一个CursorAdapter方法,它调用了AbstractWindowedCursor#checkPosition(),并且:

问题是,我们没有关闭任何Cursors。我们所有的Cursors 都来自CursorLoaders ,反过来又是由 a 产生的ContentProvider。我们从 中Cursor分别传递到每个中,我们在 中注册通知,我们从每个中通知,并且...简而言之,我找不到任何理由说明 a在使用时会关闭。CursorAdapterLoaderCallbacksCursorContentProviderContentResolverinsert(...)delete(...)update(...)Cursor

那么: a 的其他原因是StaleDataException什么?

0 投票
3 回答
354 浏览

selenium-webdriver - StaleElementReference 异常

我正在努力解决这个StaleElementReferenceException问题。我已经看到很多关于该主题的讨论,但我无法找到解决我面临的问题的方法。

测试是获取网页页脚的所有链接,然后通过单击链接并验证页面标题来验证链接是否处于活动状态。

首先,我在一个数组列表中找到并存储所有链接。我将链接名称与从数据库中检索到的值进行比较。然后对于每个链接,我单击它并验证页面标题。然后使用“driver.navigate.back()”,返回原始页面并继续其余链接。

但是,当控件返回到页面时,StaleElementReferenceException就会发生这种情况。

任何人都可以建议我摆脱这种情况吗?

谢谢, 阿努杰

0 投票
2 回答
1322 浏览

android - 在 onLoadFinished() 期间合并游标会导致旋转后出现 StaleDataException

我正在使用 loaderManager 从数据库中加载一些结果。不幸的是,以下代码在旋转设备后会产生StaleDataException :

对getWebSearchesCursor()的调用会返回一个 MatrixCursor,其中包含一些附加的搜索提示,以伴随任何返回的结果。我发现将adapter.changeCursor(results)更改为adapter.changeCursor(cursor)可以修复错误,因此看起来将 MatrixCursor 合并到返回的光标会产生错误。

我的问题是,为什么?

如果返回任何结果,我希望能够向返回的光标添加其他项目,以便用户可以选择在几个网站上执行搜索。有没有更好的方法来合并游标,这样我在旋转后就不会出现这个异常?

0 投票
1 回答
128 浏览

image - 在意图中打开 android 图像会导致 StaleDataException

我尝试使用:

或者

它可以工作,但是当我尝试离开图像查看意图时,我得到一个RuntimeExceptionStaleDataException Attempted to access a cursor after it has been closed

当我尝试启动不同的意图时,它会起作用,因此它与暂停或恢复我的活动无关

请有人帮忙

事实证明,它也是其他意图,比如电子邮件意图,当取消时,会犯这个错误

0 投票
1 回答
426 浏览

java - 错误陈旧数据异常

我正在制作一个小型 Android 应用程序,它允许用户从您的联系人列表中选择一个电话号码。当用户选择同一个联系人时,我的应用程序崩溃。

这里是LogCat:

这是代码的一部分:

你能帮我吗?谢谢

0 投票
1 回答
871 浏览

android - android.database.StaleDataException:访问关闭游标

我有主 Activity、一个 SQLiteOpenHelper 类和一个 Fragment,我必须在其中获取一个包含数据库数据的 Cursor。

在我的主要活动中,我作为静态公共成员存储并启动数据库:

这是我的数据库类的样子:

在我的片段中,我试图检索一个包含所有记录的列表:

当我运行应用程序时,我收到此错误:android.database.StaleDataException: Access closed cursor

0 投票
1 回答
4487 浏览

java - Hibernate 在调用 findOne 时返回过时的对象

我正在使用 Spring Data JPA save(Object entity) 方法从多线程 Web 应用程序中保存对象。

有时我发现当我从会话中加载一个对象时,使用:

findOne(long id)

从会话返回的对象是陈旧的,并且不反映数据库中的最新版本。我只保存来自这个应用程序的数据,并且只使用 Spring Data JPA 接口的一个实例。

什么可能导致它,我应该如何解决这个问题?

0 投票
2 回答
334 浏览

android - 如何关闭 for 循环中使用的游标

背景

我有一个游标使用如下:

当它尝试重用关闭的游标时,这会在第二次循环中产生 StaleDataException。如果我删除 cursor.close() 它运行良好,但我得到一个“光标在没有事先关闭的情况下完成”警告。

研究

此答案中的建议:https ://stackoverflow.com/a/18107638/1977132 大概将光标设置为 nullcursor.close(); cursor = null;以便可以创建一个新光标,但这没有区别,第二次循环它仍然给出一个过时的数据异常。

我已经试过了...

我尝试将它移到循环之外,如下所示:

但这不会编译错误“光标可能尚未初始化”。

问题

我的问题是如何在循环中正确使用和关闭游标。

0 投票
2 回答
723 浏览

android - 使用 CursorAdapter 关闭游标会导致后台片段出现 StaleDataException

这是我的问题的后续行动: How to close a cursor used in a for loop

响应解决了“没有事先关闭的光标完成”警告,但它在非常特殊的情况下导致了 StaleDataException。

如果列表已滚动,则此光标关闭...

和背景片段我收到以下错误:

这个问题似乎与类似的问题有关:在 onLoadFinished() 期间合并游标会在旋转后导致 StaleDataException 但它与合并游标有关并建议使用 swapCursor,我不确定如何将其应用于这种情况。

我的想法是getListView().getItemAtPosition(n)必须返回对游标的引用而不是新游标,因此当活动在后台运行并尝试访问现在关闭的游标同时保存片段状态时,它会崩溃。如前所述,它只会在列表视图被滚动时崩溃,我不确定为什么会影响它。

如何正确关闭光标而不导致崩溃?

编辑代码以响应要求查看光标是如何加载的评论: