Search code examples
androidandroid-serviceandroid-broadcast

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


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 a Thread - Sleep when the user presses the button in the MyActivity class which implements sendBroadcast(). I cannot extend the Service class to BroadcastReceiver as it is already extends to Service. Can anyone help me to figure it out how to implement this mechanism?


Solution

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