DashClockExtension
があります。これは時々更新されません。Dashclockウィジェットの拡張が更新されない
LocalBroadcastReceiverを使用して、拡張子をhttp://bit.ly/1e4uMl0に更新しています。私は放送がトリガされている間に気づい
private class DashClockUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
retrieveDataAndUpdateWidget();
}
}
:
@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));
}
私は、ブロードキャストを送信する方法は次のとおりです:
public static void updateDashClock() {
LocalBroadcastManager.getInstance(Application.getContext()).sendBroadcast(new Intent(UPDATE_DASHCLOCK));
}
私BroadcastReceiverのレシーバはonInitialize()
方法で登録されています受信者はイベントを受信しないことがあります。
私は自分のアプリを殺すことによってそれをテストしましたが、それは問題が再現されないので、私はこのことがどうして起こるのか迷っています。
誰でも?
もっとコードを投稿できますか?どのくらい正確にデータを更新しようとしていますか? publishUpdateが失敗した場合、publishUpdate(null) –
を呼び出さない限り、古いデータは残っています。問題は更新コードではなく、ブロードキャストがブロードキャスト受信者によって受信されないという事実です。通常、それはうまく動作しますが、「時には」そうではありません。なぜこれが起こるのを防ぐために私が何ができるのかを知りたいのです。当初は、アプリケーションがシャットダウンされたときに、DashClockウィジェット自体によってサービスが再度バインドされることはないと考えられ、BroadcastReceiverは登録されませんでしたが、そうではありません。サービスが始まり、ウィジェットだけで結構です。 –