【发布时间】:2013-04-08 06:27:33
【问题描述】:
我正在寻找一种方法来暂停给定ContentProvider 的Uri 上的通知。用例是:
-
Activity通过CursorLoader绑定到CursorAdapter。 -
Service可能会在ContentProvider上执行大量批量、单行更新。 -
CursorLoader将在每次更新行时重新加载其内容,因为ContentProvider通过ContentResolver#notifyChange通知听众。
由于我无法编辑ContentProvider,并且我无法控制批处理查询的执行,有没有办法暂停Uri(在执行Service)上的通知,直到所有ContentProvider -托管查询已执行?我需要这个是为了避免CursorLoader的不断重新查询引起的闪烁。
【问题讨论】:
-
为了做到这一点:您对服务和 CP 都没有影响?另一方面,如果服务在您的控制之下,请提供更多详细信息,说明您正在执行哪种 CP 更新。
-
我正在一个简单的
for循环中执行一系列“更新或插入”类型的查询。我正在使用ContentProvider,它会在每个insert或update之后发出通知,但是在这种特殊情况下,我希望能够暂停所有通知,直到我完成所有实体的更新。 -
更详细地说,我正在使用 Nicolas Klein (github.com/foxykeep/ContentProviderCodeGenerator) 的生成器生成我的
ContentProvider,它在update(Uri uri, ContentValues values, String selection, String[] selectionArgs)的末尾执行一个简单的getContext().getContentResolver().notifyChange(uri, null);。
标签: android android-contentprovider android-sqlite