vendredi 9 janvier 2015
Lebensdauer BroadcastReceiver/Handler
Posted on 11:29 by verona
Guten Abend,
ich hab da mal wieder ein kleines Problem und keine richtige Antwort gefunden. Leider.. Es geht um die Lebensdauer von BroadcastReceiver und würde zu gerne eure Meinung hören.
Folgende Situation ist zu bearbeiten:
Vom GUI-Thread aus versende ich Broadcasts zum DB-Thread, welcher wiederrum einen Broadcast mit der Antwort sendet. Das ganze funktioniert ganz gut und ich möchte das auch so beibehalten.
Jetzt zu meiner eigentlichen Frage bezüglich der Lebensdauer.
Wenn ich meinen BroadcastReceiver wie folgt erstelle, dann erhalte ich einen BroadcastRecevier welcher auch nach dem Empfangen von einem Broadcast erhalten bleibt und somit alle Broadcast die ankommen abarbeiten kann.
Jetzt zur ersten Frage:
Durch den Aufruf von lbm.unregisterBroadcast(broadcastReceiver), zerstöre ich auch den Handler und ich vergeude keinen Speicher.
Jetzt zum Zweiten Teil meiner Frage:
Wenn ich nun den BroadCast wie folgt erstelle:
Dann muss ich aber trotzdem ein unregisterBroadcastReceiver(broadcastReceiver); aufrufen.
Bitte korrigiert mich wenn ich falsch liege aber der Handler verwirrt mich ein bisschen. Ist er überhaupt notwendig? Und wenn nein, wann wäre er notwendig?
Ich hab eben das Problem das ich manchmal einfach einen BroadcastReceiver brauche der genau ein Broadcast entgegennehmen kann und danach nicht mehr benötigt wird. Wenn ich einen Handler, wie beim ersten BroadcastReceiver, erstelle dann hab ich den Vorteil das ich noch in der run()-methode ein lbm.unregisterBroadcastReceiver(broadcastReceiver); aufrufen kann. Ohne einen Handler kann ich das so nicht tun.
Ich muss dringends darauf achten keinen Speicherfresser zu schaffen.
Vielen Dank für eure Hilfe!!!!
ich hab da mal wieder ein kleines Problem und keine richtige Antwort gefunden. Leider.. Es geht um die Lebensdauer von BroadcastReceiver und würde zu gerne eure Meinung hören.
Folgende Situation ist zu bearbeiten:
Vom GUI-Thread aus versende ich Broadcasts zum DB-Thread, welcher wiederrum einen Broadcast mit der Antwort sendet. Das ganze funktioniert ganz gut und ich möchte das auch so beibehalten.
Jetzt zu meiner eigentlichen Frage bezüglich der Lebensdauer.
Wenn ich meinen BroadcastReceiver wie folgt erstelle, dann erhalte ich einen BroadcastRecevier welcher auch nach dem Empfangen von einem Broadcast erhalten bleibt und somit alle Broadcast die ankommen abarbeiten kann.
Java Code:
- private void registerBroadCast() {
- IntentFilter inFi = new IntentFilter();
- inFi.addAction("RESULT");
- LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getApplicationContext());
- broadCastReceiver = new BroadcastReceiver()
- {
- @Override
- public void run() {
- if(intent.getAction().equals("RESULT")) {
- @SuppressWarnings("unchecked")
- readInputs(inputs);
- }
- }
- });
- }
- };
- lbm.registerReceiver(broadCastReceiver,inFi);
- }
Jetzt zur ersten Frage:
Durch den Aufruf von lbm.unregisterBroadcast(broadcastReceiver), zerstöre ich auch den Handler und ich vergeude keinen Speicher.
Jetzt zum Zweiten Teil meiner Frage:
Wenn ich nun den BroadCast wie folgt erstelle:
Java Code:
- final BroadcastReceiver broadCastReceiver = new BroadcastReceiver()
- {
- @Override
- readInputs(inputs);
- }
- };
- lbm.registerReceiver(broadCastReceiver,inFi);
Dann muss ich aber trotzdem ein unregisterBroadcastReceiver(broadcastReceiver); aufrufen.
Bitte korrigiert mich wenn ich falsch liege aber der Handler verwirrt mich ein bisschen. Ist er überhaupt notwendig? Und wenn nein, wann wäre er notwendig?
Ich hab eben das Problem das ich manchmal einfach einen BroadcastReceiver brauche der genau ein Broadcast entgegennehmen kann und danach nicht mehr benötigt wird. Wenn ich einen Handler, wie beim ersten BroadcastReceiver, erstelle dann hab ich den Vorteil das ich noch in der run()-methode ein lbm.unregisterBroadcastReceiver(broadcastReceiver); aufrufen kann. Ohne einen Handler kann ich das so nicht tun.
Ich muss dringends darauf achten keinen Speicherfresser zu schaffen.
Vielen Dank für eure Hilfe!!!!
Lebensdauer BroadcastReceiver/Handler
Categories: Lebensdauer BroadcastReceiver/Handler
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire