一个有希望的直截了当的问题:当为给定的URI调用ContentResolver.notifyChange()
时,是否会通知ContentObserver
观察此URI的后代URI?
例如,假设我设置了一个光标来观察特定资源的URI:
Uri uriA = Uri.parse("content://" + AUTHORITY + "/orders/21");
cursor.setNotificationUri(getContext().getContentResolver(), uriA);
然后,我通知ContentResolver
这个URI的祖先发生了变化(例如,因为我已经删除了所有订单):
Uri uriB = Uri.parse("content://" + AUTHORITY + "/orders");
getContext().getContentResolver().notifyChange(uriB, null);
我的已注册观察uriA
的Cursor
会收到通知吗?
发布于 2011-07-22 04:38:45
在测试之后,简单的回答是:是的。
发布于 2014-01-29 05:28:27
这取决于它是如何注册的。如果在notifyForDescendents
参数设置为true的情况下注册ContentObserver
,则为yes。否则就不会。
注册是通过ContentResolver#registerContentObserver
方法完成的:
void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)
https://stackoverflow.com/questions/6678046
复制相似问题