1

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

我使用了 getContextResolver().query 而不是 managedQuery。当我尝试恢复应用程序时,帮助我停止强制关闭应用程序。

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

4

1 回答 1

1

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

但我建议看一下CursorLoader,因为它更方便、更可靠,并且是 Google 建议的加载游标的方式。如果您的目标是旧 Android,请考虑使用支持库 v4 。

于 2012-07-17T02:54:43.457 回答