Soru & Cevap

BroadcastReceiver'dan değer döndürmek

08.08.2014 - 02:06

Merhabalar, 

 

Örneğin MAinActivity içerisinde register ettiğim BroadcastReceiver'da aşağıdaki gibi bir işlem yapıyorum. 

@Override
public void onReceive(Context context, Intent intent) {

    String key = LocationManager.KEY_PROXIMITY_ENTERING;
    eventID = intent.getIntExtra(AlarmList.EVENT_ID_INTENT_EXTRAS, -1);
    
    Boolean entering = intent.getBooleanExtra(key, false);
    
    if (entering) {
        returnvalue= eventID;

....

....

}

 

entering ise returnvalue değerini  MainActiviy'e döndürmek  istiyorum.

Bu işlemi nasıl yapabilirim. Ayrıca Broadcastreceiver işini bitirdikten sonra MainActivity'e işlemine nereden devam eder? 

 

Teşekkürler.

5 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
08.08.2014 - 08:03

Broadcast arkada çalışır o an ne yaparsan yap seni takmaz yani activity nereden devam eder diye bir kavram yok o esnada öyle söyleyeyim.BroadcastReceiver çalıştığı sırada bi activity ekranda görünür ise resume durumundadır broadcast bunu bloklamaz birbiri ile kesişimleri olmaz kısaca.

Veri transferine gelirsek en basiti şöyle olabilir Activity'de static bir değişken tanımlayıp Receiver içerisinden

ClassAdi.degiskenAdi = returnValue; şeklinde bi atama yapabilirsin.

veya daha profesyonel yöntemler istersen observer,otto,bus event tarzı şeyleri inceleyebilirsin.

http://andhradroid.wordpress.com/2012/04/05/object-observer-pattern-in-android/

Erkan
08.08.2014 - 11:10
Yorumunuz için teşekkürler. Aslında şunu yapmak istiyorum. Eğer ilgili işlev tetiklendi ise bunu yakalayıp Removeproximityalert ve Unregisterreceiver işlevlerini gerçekleştirmek istiyorum. Okuduğum kaynaklarda OnDestroy() içerisinde yapılacağını belirtmiş ancak bunu denediğimde ekrana herhangi bir mesaj yazdıramıyorum dolayısı ile oraya düşmediğini düşünüyorum. Ayrıca BroadcastReceiver class'ını Activity içerisinde mi tanımlamak mantıklıdır ayrı bir class oluşturup orada mı işlemleri ypaatırmak mantıklıdır. Bir far kı var mıdır?
Ahmet Burak Demirkoparan
08.08.2014 - 11:23
onDestroy sadece default olarak bulunan class yok olduğunda çağrılan bir method orda olması mantıksız.onReceive gelen sonucu dinler broadcast içinde. Bence broadcasti olsun diğer şeyleri olsun hep farklı farklı class'larda yap. Hani bazen context(this) ihtiyacın felan oluyor diye inner classlara sığınmaya gerek yok.Yazdıgın harici class'a constructorda context parametresi alıp işlemlerini cok rahat gerçekleştirebilirsin.Kod karmaşasından uzaklaştırır hem sana yardımcı olur hemde kodun okunabilirliğini artırır. Broadcasti başlatmayı unutma intent filterinide manifeste eklemeyi unutma