Bazen güncellenmeyen bir DashClockExtension
sahibim.Dashclock Widget eklentisi güncellenmiyor
http://bit.ly/1e4uMl0'a benzer uzantıyı güncellemek için LocalBroadcastReceiver kullanıyor. Alıcı onInitialize()
yöntemde kayıtlıdır:
public static void updateDashClock() {
LocalBroadcastManager.getInstance(Application.getContext()).sendBroadcast(new Intent(UPDATE_DASHCLOCK));
}
benim BroadcastReceiver var: Ben yayın gönder nasıl
@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));
}
fark ettim
private class DashClockUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
retrieveDataAndUpdateWidget();
}
}
o yayın tetiklenir iken alıcı bazen olayı almaz.
Uygulamamı öldürerek test ettim, ancak bu sorunu yeniden üretmiyor, bu yüzden bunun neden bir kayıp olacağını görüyorum.
Herkes?
Daha fazla kod gönderir misiniz? Verileri tam olarak nasıl güncellemeye çalışıyorsunuz? PublishUpdate başarısız olursa, publishUpdate (null) –
'u aramadıkça eski veriler hala kalır. Sorun, güncelleme kodunun kendisi değil, yayınların yayın alıcısı tarafından alınmadığı gerçeğidir. Genellikle iyi çalışıyor ama "bazen" yapmıyor ve neden olmasını ve bunu önlemek için neler yapabileceğimi bilmek isterim. Öncelikle uygulamanın kapatıldığı zaman servisin DashClock widget'ının kendisi tarafından tekrar bağlanmayacağını ve BroadcastReceiver'ın kaydedilmeyeceğini düşündüm ama bu durum böyle değil. Servis başlar ve widget ile sıkı sıkıya bağlıdır. –