1

サービスがあります。このサービスは、AsyncTask を実行し、onProgressUpdate メソッドをオーバーライドするスレッドを実行します。このメソッドでは、ローカル ブロードキャスト レシーバーにメッセージを送信します。

Intent intent = new Intent("BookDownloadService");

                    // You can also include some extra data.
                    intent.putExtra("bookID", book.bookID);
                    intent.putExtra("maxValue",  update[1]);
                    intent.putExtra("currentValue",  update[0]);
                    LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);

私のアクティビティでは、データを取得したいと考えています。

LocalBroadcastManager.getInstance(context).registerReceiver( new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            int bookId = intent.getIntExtra("bookID", 1);
            int maxValue = intent.getIntExtra("maxValue", 10);
            int currentValue = intent.getIntExtra("currentValue", 0);
            boolean isFinish = intent.getBooleanExtra("isFinish", false);
            Log.d("Receiver Buch " + bookId, currentValue + " von " + maxValue + " finish: " + isFinish);
        }
    }, new IntentFilter("BookDownloadService"));

しかし、何も起こりません。ログメッセージやエラーはありません。

4

1 に答える 1

0

受信者を登録/登録解除する必要があります...

(onPause)
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);

(onResume)
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, <your intentFilter>);
于 2014-08-28T13:42:12.327 に答える