web-dev-qa-db-ja.com

AndroidのサービスクラスにBroadcastReceiverを実装するにはどうすればよいですか?

作成したサービスクラスにBroadcastReceiverを実装する必要があります。

public class MyService extends Service

このクラスでは、ユーザーがsendBroadcas()を実装するMyActivityクラスのボタンを押すと、Thread-Sleepを使用してダウンロードのシミュレーションを実装する必要があります。 ServiceクラスはすでにServiceに拡張されているため、BroadcastReceiverに拡張できません。誰かが私がこのメカニズムを実装する方法を理解するのを手伝ってくれる?

ありがとう

12

BroadcastReceiverをサービスのトップレベルクラスまたは内部クラスとして使用します。そして、あなたのサービスの受信者の参照を取得します。このような:

public class MyService extends Service {
    BroadcastReceiver mReceiver;

    // use this as an inner class like here or as a top-level class
    public class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            // do something
        }

        // constructor
        public MyReceiver(){

        }
    }

    @Override
    public void onCreate() {
         // get an instance of the receiver in your service
         IntentFilter filter = new IntentFilter();
         filter.addAction("action");
         filter.addAction("anotherAction");
         mReceiver = new MyReceiver();
         registerReceiver(mReceiver, filter);
    }
}
23
Steve Benett