How do I implement a BroadcastReceiver in a Service Class in Android?

Dilshad Abduwali picture Dilshad Abduwali · Sep 18, 2013 · Viewed 18.9k times · Source

I need to implement BroadcastReceiver in a Service class I have created:

public class MyService extends Service

in this class I have to implement a Simulation of Download by using Thread - Sleep when the user presses the button in the MyActivity Class which implements sendBroadcas(). I cannot extends the Service class to BroadcastReceiver as it is already extendes to Service. Can anyone help me to figure it out how to implement this mechanism?

thanks

Answer

Steve Benett picture Steve Benett · Sep 18, 2013

Have the BroadcastReceiver as a top-level class or as an inner class in your service. And get a reference of the receiver in your service. Like this:

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);
    }
}