Ich habe eine DashClockExtension
, die manchmal nicht aktualisiert.Dashclock Widget Erweiterung nicht aktualisiert
Es verwendet einen LocalBroadcastReceiver, um die Erweiterung ähnlich wie http://bit.ly/1e4uMl0 zu aktualisieren. Der Empfänger wird in der onInitialize()
Methode registriert:
@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));
}
Das ist, wie ich die Sendung senden:
public static void updateDashClock() {
LocalBroadcastManager.getInstance(Application.getContext()).sendBroadcast(new Intent(UPDATE_DASHCLOCK));
}
Das ist mein BroadcastReceiver ist:
private class DashClockUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
retrieveDataAndUpdateWidget();
}
}
Ich bemerkte, dass während der Sendung ausgelöst wird die Empfänger empfängt das Ereignis manchmal nicht.
Ich testete es, indem ich meine App tötete, aber das reproduziert das Problem nicht, also weiß ich nicht, warum das passieren würde.
Jeder?
Können Sie mehr Code posten? Wie genau versuchen Sie, die Daten zu aktualisieren? Wenn publishUpdate fehlschlägt, bleiben die alten Daten erhalten, es sei denn, Sie rufen publishUpdate (null) auf –
Das Problem ist nicht der Aktualisierungscode selbst, sondern die Tatsache, dass die Übertragung nicht vom Broadcast-Empfänger empfangen wird. Normalerweise funktioniert es gut, aber "manchmal" nicht und ich würde gerne wissen, warum und was ich tun kann, um dies zu verhindern. Anfangs dachte ich, wenn die App heruntergefahren wird, würde der Dienst nicht mehr vom DashClock-Widget selbst gebunden werden und der BroadcastReceiver würde nicht registriert werden, aber das ist nicht der Fall. Der Dienst startet und ist an das Widget gebunden. –