Das ist, ich habe diesen BroadcastReceiver ich on-the-fly erstellen, um für einen Broadast zu hören, nach dem ich möchte, dass es sich selbst abmeldet.Ist es in Ordnung, den 'dynamischen' BroadcastReceiver von der eigenen onReceive() Methode des Empfängers zu entfernen?
Ich habe keinen Beispielcode gefunden, der es so macht, aber ich habe auch keine Regel in den Android Online-Dokumenten gefunden, die dies verbietet. Aber ich kann es nicht so lange herumhängen lassen wie die Aktivität, und es ist sowieso in einer anonymen Klasse, daher kennt die enthaltende Klasse nicht einmal den Variablennamen.
Das heißt, sieht der Code so etwas wie dieses:
myInfoReceiver = new BroadcastReceiver() {
onReceive(Context ctx, Intent intt) {
// do some Notification when I get here
nm.notify("I got here") // obvious pseudo code
ctx.unregisterReceiver(myInfoReceiver);
} // end onReceive
ctx.registerReceiver),uInfoReceiver, new IntentFilter(...));
}; // end BroadcastReceiver
Aber wenn ich dies ausführen, klagt Android, wenn es austragen nennt, bestand darauf, dass der Empfänger nicht da ist (ich den genauen Wortlaut vergessen abzumelden, aber es warf IllegalArgumentException).
Ich habe auch versucht, den Code zu ändern, um zu überprüfen, dass die Aktion in 'intt' ist die gleiche wie erwartet - aber dann führt es noch onReceive aus, aber meldet nicht automatisch die Registrierung.
Was Ziel, du wollen erreichen? Ich nehme an, "BroadcastReceiver" könnte die falsche Wahl für Ihr Problem sein. Wenn Sie eine Operation einmal ausführen möchten und sie unabhängig vom Aktivitätslebenszyklus machen möchten, sollten Sie 'IntentService' oder' Service' mit Event-Bus (z. B. Otto) in Betracht ziehen. –
Ich hätte IntentService usw. nicht verwendet, weil das größere System, das Teil dieser ist, bereits eine Broadcast-Absicht hat, die genau die Information darstellt, die ich möchte. Außerdem brauche ich nicht so viel Unabhängigkeit vom Lebenszyklus. Ich bin bereits auf dem UI-Thread, der auf diese Absicht wartet, und zeigt nichts als einen Fortschrittsdialog. –