2012-09-13 25 views
8

Tôi có một tiện ích dựa trên ListView chạy tốt, và nó dựa vào một cuộc gọi dịch vụ web JSON để tự cư trú. Tôi có nút làm mới hoạt động tốt và buộc tải lại từ web. Tôi làm điều đó bằng cách sử dụng một phát sóng tùy chỉnh mà sau đó gọi cả onDataSetChanged(), sau đó updateAppWidget() theo thứ tự. Những gì tôi đã tìm thấy là khi Android cập nhật widget tự động (dựa trên khoảng thời gian đặt nó định nghĩa XML của tôi), chỉ updateAppWidget() dường như được gọi, và hàm onDataSetChanged() của tôi không bao giờ chạy, dẫn đến một dấu thời gian được cập nhật (Tôi cập nhật trong mỗi updateAppWidget() gọi), nhưng dữ liệu cũ.Android Widgets: onDataSetChanged không được gọi bởi updateAppWidget()

Làm cách nào để buộc Android gọi hoặc kích hoạt trênDataSetChanged() tại một khoảng thời gian nhất định?

+0

Bạn có bao giờ gọi 'notifyDataSetChanged()' trên bộ điều hợp từ xa không? – Eric

+0

Không. Khi nào tôi nên làm điều đó? Có vẻ như mã cập nhật tự động không cung cấp cho tôi một cuộc gọi lại? – RealCasually

+0

Tôi sẽ nghĩ rằng, khi cập nhật, bạn nên có một số tham chiếu đến bộ điều hợp của bạn (không chắc chắn cách bạn muốn lưu này), sau đó có thể gọi thông báo trên đó. 'onDataSetChanged()' chỉ được gọi là * sau * thông báo được gửi. – Eric

Trả lời

9

Hóa ra tôi cần gọi AppWidgetManager.notifyAppWidgetViewDataChanged(widgetId, view) bên trong phương thức AppWidgetProvider.onUpdate() của mình.

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