15

Câu hỏi đơn giản hy vọng: Khi ContentResolver.notifyChange() được gọi cho một URI cụ thể, có phải là ContentObserver s quan sát hậu duệ URI của URI này được thông báo không?Khi ContentResolver.notifyChange() được gọi cho một URI đã cho, các ContentObservers có quan sát các URI con của URI này được thông báo không?

Ví dụ: Nói rằng tôi có một thiết lập con trỏ đến quan sát URI của một tài nguyên cụ thể:

Uri uriA = Uri.parse("content://" + AUTHORITY + "/orders/21"); 
cursor.setNotificationUri(getContext().getContentResolver(), uriA); 

sau đó tôi thông báo cho ContentResolver của một sự thay đổi đến một tổ tiên của URI này (ví dụ bởi vì tôi đã xóa tất cả các đơn đặt hàng):

Uri uriB = Uri.parse("content://" + AUTHORITY + "/orders"); 
getContext().getContentResolver().notifyChange(uriB, null); 

Tôi có Cursor, đã đăng ký để quan sát uriA, được thông báo không?

Trả lời

11

Sau khi thử nghiệm, câu trả lời đơn giản: có.

+6

Tôi tin rằng câu trả lời của tôi là chính xác hơn. Bạn có thể chấp nhận nó hoặc kết hợp nó vào câu trả lời của riêng bạn không? Tôi có cảm giác mọi người thường không nhìn qua câu trả lời được chấp nhận. – Xiao

29

Tùy thuộc vào cách đăng ký. Nếu số ContentObserver được đăng ký với đối số notifyForDescendents được đặt thành true, thì có. Nếu không thì không.

Việc đăng ký được thực hiện thông qua phương pháp ContentResolver#registerContentObserver:

void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer) 
+1

Bạn thưa bạn xứng đáng được nhiều người vượt trội hơn! – Roel

Các vấn đề liên quan