ListFragments中的并发游标

时间:2013-02-09 22:40:37

标签: android concurrency android-fragments simplecursoradapter

我的应用程序中有一个处理游标的奇怪问题。

我有一个带有两个ListFragments的片段管理器。两个ListFragments都包含从我的数据库中提取的项目列表 - 但不同的项目,如在不同的数据结构中。

当我第一次启动我的应用程序时,第一个可见的ListFragment工作正常,但第二个只有默认值。我将问题追溯到我的代码的这一部分

    try {
        sub = Subscription.getByCursor(cursor);
    } catch (IllegalStateException e) {
        e.printStackTrace();
    }

我失败并返回了IllegalStateException

  E/CursorWindow(30684): Failed to read row 5, column -1 from a CursorWindow which has 33 rows, 7 columns.

W / System.err(30684):java.lang.IllegalStateException:无法从CursorWindow读取第5行col -1。在从中访问数据之前,请确保Cursor已正确初始化。

然而,当我开始调试应用程序时,我无法重现错误。我花了很长时间才意识到包含了时间依赖性。如果我让我的代码等待(就在我初始化第二个(损坏的)片段之前),就像这样:

        try{ Thread.sleep(10000); }catch(InterruptedException e){ }

它确实有效。

我猜这与第一个片段中的光标在第二个片段中被重用有关,但它们是不同的类,所以我看不出这是怎么可能的。

有什么建议吗?

最好的

马库斯

0 个答案:

没有答案