Android:管理光标传递给CursorAdapter

时间:2012-07-17 02:08:26

标签: android cursor staledataexception

在冰淇淋三明治上,当我想恢复具有带有CursorAdapter的gridview的应用程序时,我的应用程序开始强制关闭,该CursorAdapter已经将托管查询传递给CursorAdapter。 Exception将是StaleDataException,表示我正在尝试访问正在关闭的游标。

我使用了getContextResolver()。查询而不是使用managedQuery。当我试图恢复申请时,帮助我停止强制关闭应用程序。

在那种情况下,如果我用这种方式。我需要关闭光标还是由适配器关闭。

1 个答案:

答案 0 :(得分:2)

根据Activity documentation使用managedQuery您不需要手动关闭游标,但手动使用ContentResolver您需要这样做。适配器不会关闭光标,因为当用户离开应用程序并且不再需要光标时,它不知道(而不是活动)。通常,使用null调用changeCursor()(适配器将关闭旧的)或swapCursor()调用null(并手动关闭返回的光标)可能就足够了。

但是,我建议您查看CursorLoader更方便,更可靠,并建议谷歌加载游标。如果您要定位旧Android,请考虑使用support library v4