即使特定查询与更新不匹配,也会调用 LoaderManager.onLoadDone



我有一个Android应用程序,它有一个内容提供商,我经常更新。为了加载所述数据的列表,我正在使用加载管理器。

在详细信息页面上,我也使用 LoaderManager,但我像这样创建 CursorLoader:

return new CursorLoader(getActivity(), DataProvider.POST_URI, projection, "_id = ?", new String[]{String.valueOf(post_id)}, null);

如您所见,我只从表中获取了一个项目。更新行时,onLoadFinished回调也会更新,但当其他行被添加/修改到表中时,也会更新。这不会很麻烦,但有时,它会导致整个列表变白并重新绘制,当它多次发生时,这可能会让用户感到沮丧。

您知道我怎样才能避免这种行为吗?

重新加载是因为您将此游标加载器与我假设用于帖子表的DataProvider.POST_URI相关联。只要此表中的任何元素发生更改,就会通知具有该Uri的所有游标。如果要接收单个项目的通知,则应实施新的Uri方案以仅匹配该项目。有关示例,请查看 UriMatcher 类的文档。您应该执行类似于PEOPLEPEOPLE_ID情况的操作。

编辑

你可以在这里找到一个很好的教程ContentProvider。特别是第9.4节应有助于正确实施ContentProvider

最新更新