ローカルブロードキャストを使用して、AsyncTaskが動作を終了したことをサービスに通知していますが、小さな問題があります。ブロードキャストは1回だけ送信されます(アプリの起動時にのみ呼び出される関数によって作成されます)が、 2回受け取ります。
簡略化されたコード:
@Override
protected void onPostExecute(HttpResponse result) {
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getBaseContext());
localBroadcastManager.sendBroadcast(new Intent(getString(R.string.bc_CONNECTED)));
}
サービス中:
private BroadcastReceiver connectedBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(getString(R.string.app_tag), "broadcast received !!");
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this).registerReceiver(connectedBroadcastReceiver, new IntentFilter(getString(R.string.bc_CONNECTED)));
return START_STICKY;
}
誰かがそのような奇妙な行動に遭遇したことがありますか?