【问题标题】:Cursor problem/Stale Data Exception in unusual situation异常情况下的光标问题/过时数据异常
【发布时间】:2010-11-04 19:19:09
【问题描述】:

希望有人能帮助解决这个在我看来是一个特殊问题。我的思绪在这里有点跳动,因为它破坏了我对 Android Activity 生命周期的理解。让我试着让事情变得更清楚。

问题:我在自定义适配器(扩展 BaseAdapter)的“getView”方法期间收到“StaleDataException”,该适配器用于填充 GridView 的活动。到目前为止听起来很直接。当我第一次进入活动时,适配器按预期工作并且填充了网格。 我在 Activity 上有一个按钮,它会触发 Intent 以允许用户拍照,然后通过“onActivityResult”返回,将图像保存到数据库中。这一切也都奏效了。事实上,我先写了那部分,然后添加了适配器和网格视图。

现在,当我去相机拍照时,会发生 StaleDataException,然后单击“确定”返回...在我的活动的大多数事件中,我有很多 Log 语句,而且非常奇怪的是 StaleDataException 正在发生在触发任何这些事件之前...在 OnActivityResult/OnResume 等之前。

所以我很困惑为什么在我正确返回到我的活动之前以及在调用 onActivityResult/OnResume 之前访问适配器。..

调试导致异常的步骤,这一切都发生在这一行:

String contentType = dataCursor.getString(dataCursor.getColumnIndexOrThrow(DbStatics.ACCIDENTS_MEDIA_KEY_TYPE));

让我感到困惑的是 dataCursor 实际上是 Open 并且第一个调用 (getColumnIndexOrThrow) 也返回一个值。所以它是导致异常的 getString()。

所以我希望这足够清楚......并且真的真的希望有人能够阐明正在发生的事情......

非常感谢,

【问题讨论】:

    标签: android sqlite staledataexception


    【解决方案1】:

    我最近在几乎完全相同的场景中遇到了完全相同的问题。 (我使用的是 Gallery 而不是 GridView)

    在我的例子中,我的代码运行了好几个月——直到我最近将我的 N1 更新到 2.3。 我的解决方案(在我自己的大脑跳动之后)是在我传递给我的适配器的光标上调用 startManagingCursor。 相反,我自己管理光标。

    这似乎为我解决了问题......虽然我无法告诉你为什么......也许更有经验的人可以解释一下。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      相关资源
      最近更新 更多