Tôi có một số DashClockExtension
mà đôi khi không cập nhật.Tiện ích mở rộng Dashclock không cập nhật
Đang sử dụng LocalBroadcastReceiver để cập nhật tiện ích mở rộng tương tự như http://bit.ly/1e4uMl0. Người nhận được đăng ký trong phương pháp onInitialize()
:
@Override
protected void onInitialize(boolean isReconnect) {
super.onInitialize(isReconnect);
LocalBroadcastManager broadcastMgr = LocalBroadcastManager.getInstance(this);
if (mDashClockReceiver != null) {
try {
broadcastMgr.unregisterReceiver(mDashClockReceiver);
} catch (Exception ignore) {}
}
mDashClockReceiver = new DashClockUpdateReceiver();
broadcastMgr.registerReceiver(mDashClockReceiver, new IntentFilter(UPDATE_DASHCLOCK));
}
Đó là cách tôi gửi phát sóng:
public static void updateDashClock() {
LocalBroadcastManager.getInstance(Application.getContext()).sendBroadcast(new Intent(UPDATE_DASHCLOCK));
}
Đó là BroadcastReceiver tôi:
private class DashClockUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
retrieveDataAndUpdateWidget();
}
}
tôi nhận thấy rằng trong khi phát sóng được kích hoạt các người nhận không nhận được sự kiện đôi khi.
Tôi đã thử nghiệm nó bằng cách giết chết ứng dụng của tôi nhưng điều đó không tái tạo vấn đề vì vậy tôi đang thua lỗ tại sao điều này sẽ xảy ra.
Bất kỳ ai?
Bạn có thể đăng thêm mã không. Bạn đang cố cập nhật dữ liệu chính xác như thế nào? Nếu publishUpdate không thành công, dữ liệu cũ vẫn tồn tại trừ khi bạn gọi publishUpdate (null) –
Vấn đề không phải là mã cập nhật mà thực tế là chương trình phát sóng không nhận được tín hiệu phát sóng. Thông thường nó hoạt động tốt nhưng "đôi khi" nó không và tôi muốn biết tại sao và những gì tôi có thể làm để ngăn chặn điều này xảy ra. Ban đầu tôi nghĩ rằng khi ứng dụng được tắt dịch vụ sẽ không bị ràng buộc một lần nữa bởi DashClock widget chính nó và do đó BroadcastReceiver sẽ không được đăng ký nhưng đó không phải là trường hợp. Dịch vụ này bắt đầu và bị ràng buộc bởi tiện ích con tốt. –