Android 的 ContentObserver 类的 onChange() 方法表示,“在可用时包含已更改的内容 Uri。” URI 在什么情况下可用?什么情况下不可用?
uri 参数是在 API 级别 16 (Android 4.1) 中添加的,因此我希望它在 Android 4.1 和更新版本中设置。但是,我在 Android 4.3 上看到一个未设置 uri 的情况。
方法 1:有效
MyContentObserver.onChange() 被调用并传递一个有效的 uri:
contentResolver.registerContentObserver(myUri, true, new MyContentObserver());
方法 2:不起作用——为什么不呢?
调用了 MyContentObserver.onChange() 但 uri 参数为空:
contentResolver.query();
cursor.registerContentObserver(new MyContentObserver);
这是预期的吗?其中一个比另一个更受欢迎吗?我已经使用“content://com.google.android.gm/me@example.com/labels”并使用我自己的自定义 ContentProvider 对此进行了测试。
最佳答案
这是一个老问题,但仍然没有答案。所以我会添加我的答案,以防人们仍然对此感到好奇。
当您的内容提供者使用 getContext().getContentResolver().notifyChange(URI, "your_uri");
通知已注册的观察者时,它会向 ContentResponder
请求.该方法的返回值是您使用内容响应器的 registerContentObserver()
方法注册的 ContentObserver
,这是您在第一种情况下所做的。但是,在第二种情况下,您使用 Cursor
的 registerContentObserver()
方法在 Cursor
中注册了观察者,因此 ContentResponder
对此一无所知。
关于android - 什么情况下uri传递给Android的ContentObserver.onChange()回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18991761/