Vraag Hoe implementeer ik een BroadcastReceiver in een serviceklasse in Android?


Ik moet BroadcastReceiver implementeren in een serviceklasse die ik heb gemaakt:

public class MyService extends Service

in deze klasse moet ik een simulatie van downloaden implementeren door Thread - Sleep te gebruiken wanneer de gebruiker op de knop drukt in de MyActivity Class die sendBroadcas implementeert (). Ik kan de serviceklasse niet uitbreiden naar BroadcastReceiver omdat deze al wordt uitgebreid naar Service. Kan iemand me helpen om erachter te komen hoe dit mechanisme moet worden geïmplementeerd?

bedankt


12
2017-09-17 23:01


oorsprong


antwoorden:


Laat de BroadcastReceiver als een klasse op het hoogste niveau of als een innerlijke klasse in uw dienst zijn. En krijg een referentie van de ontvanger in uw dienst. Soortgelijk:

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

22
2017-09-17 23:12