Bu, bir Broadast'ı dinlemek için anında yayınladığım bir BroadcastReceiver'ım var, bundan sonra da kaydını kaldırmak istiyorum.Alıcının kendi onReceive() yönteminden 'dinamik' BroadcastReceiver kaydını silmek tamam mı?
ben bu şekilde yapar herhangi bir örnek kod bulamadım ama bu yasaklar android çevrimiçi docs herhangi bir kuralı bulduk de. Ancak, aktiviteyi sürdürdüğü sürece etrafta takılmasına izin veremem, ve yine de anonim bir sınıftayım, bu yüzden içerdiği sınıf değişken ismini bile bilmiyor. ,
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
Ama bu çalıştırdığınızda o alıcı (Ben bire bir aynısını unutmak kaydını silmek olmadığını ısrar ederek kaydını çağırdığında, Android şikayet: is
, kod şöyle görünür ama IllegalArgumentException attı).
Ben de beklendiği gibi 'INTT' eylem aynı olup olmadığını kontrol etmek kodunu değiştirme çalıştı - ama sonra yine executest sessizce OnReceive ama kaydını başarısız olur.
neler gol sen misin ulaşmak ister misin? Sanırım, 'BroadcastReceiver' probleminiz için yanlış seçim olabilir. Bir kez bir işlem yapmak ve bunu etkinlik yaşam döngüsünden bağımsız yapmak istiyorsanız, olay veri yolu ile (ör. Otto) "IntentService" veya "Service" kullanmayı düşünün. –
IntentService vb. Kullanmazdım, çünkü bu daha büyük sistemde zaten istediğim bilgiyi tam olarak temsil eden bir yayın niyetine sahip. Ayrıca, yaşam döngüsünden çok fazla bağımsızlığa ihtiyacım yok. Zaten bu amaç için bekleyen UI iş parçacığımdayım, hiçbir şey yapmadan bir ilerleme iletişim kutusu gösteriyorum. –