Tôi đang cập nhật ứng dụng Android 2.2 để sử dụng CursorLoader (sử dụng thư viện tương thích v4) và tôi đang cố gắng giải thích tại sao phương thức onLoadFinished
không được gọi khi nhà cung cấp nội dung thông báo thay đổi về nội dung liên quan đến truy vấn CursorLoader.Android CursorLoader không phản hồi các thông báo ContentProvider
CursorLoader đang truy vấn nhà cung cấp nội dung khách hàng. nhà cung cấp của tôi đặt ra thông báo URI trong phương pháp truy vấn của nó:
cursor.setNotificationUri(getContext().getContentResolver(), uri);
và thông báo những thay đổi trong chèn nó/cập nhật/xóa các phương pháp:
getContext().getContentResolver().notifyChange(uri, null);
Tôi đã kiểm tra rằng URI là giống hệt nhau trong cả hai trường hợp. Trước đây tôi đã sử dụng ManagedQuery với cùng một nhà cung cấp nội dung và nội dung được truy vấn đã được cập nhật tốt, điều này khiến tôi nghĩ rằng nhà cung cấp nội dung có thể là ok.
Tôi đã xem ví dụ LoaderCursorSupport và thú vị khi chạy trên Nexus One Tôi không thấy nó phản ánh những thay đổi tôi thực hiện cho tên liên hệ (chuyển đổi giữa ứng dụng mẫu và ứng dụng danh bạ). Phải không? Nếu vậy, có một số vấn đề cơ bản mà tôi không biết?
bạn có thể cung cấp một số mã để giúp chúng tôi xác định vấn đề không? –
Bật gỡ lỗi có thể hữu ích, 'LoaderManager.enableDebugLogging (true)' –
Cảm ơn mẹo gỡ lỗi. Mã máy khách của tôi về bản chất giống như ví dụ LoaderCursorSupport mà tôi đã tham chiếu. Cho rằng điều này thể hiện cùng một vấn đề, tôi đã hiểu lầm cách CursorLoader được cho là hoạt động tức là nếu tôi chạy ví dụ hỗ trợ để hiển thị danh sách liên hệ, sau đó chỉnh sửa số liên lạc trong sổ địa chỉ, nó sẽ không thay đổi trong danh sách được hiển thị bởi ứng dụng ví dụ? – siwatson