2011-07-30 9 views
5

Sunucudan getirilen bazı verileri görüntüleyen bir etkinliğim var. Herhangi bir bağlantı yoksa, aktivite önbelleğe alınmış bazı verileri görüntüler; Bağlantı mevcutsa, etkinlik verileri getirir ve görüntüler. Her şey beklendiği gibi çalışıyor.
Şimdi, etkinliğimi, bağlantı gerçekleşir gerçekleşmez yeniden yüklemeyi istiyorum.android aktivite ve yayın alıcısı arasında iletişim kurmak

şöyle

Yayın alıcısı benim apaçık dosyasında bildirildi

public class ConnectionChangeReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager connectivityManager = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 
     if (activeNetInfo != null) { 
      //what to do here? 
     } 
    } 
} 
:

: Benim etkinlikte

<receiver android:name=".ConnectionChangeReceiver" 
      android:label="NetworkConnection"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
     </intent-filter> 
</receiver> 

, ben alıcıyı kayıt Ben BroadcastReceiver uzanan basit Alıcı kullanıyorum

BağlantıDeğişimYeni alıcı = yeni ConnectionChangeReceiver(); this.registerReceiver (alıcı, yeni IntentFilter (ConnectivityManager.CONNECTIVITY_ACTION));

Şimdi, daha sonra ne yapacağım gibi kafam karıştı. OnReceive yöntemi uygulandığında, etkinliğimin bundan haberdar edilmesi nasıl yapılır? Yeni bir aktivite başlatabileceğimi biliyorum, ama bu gerçekten istediğim şey değil. ConnectionChangeReceiver'ı etkinlikimin özel bir sınıfı olarak mı bildirmeliyim? Yoksa başka bir çözüm var mı?

+1

Bağlantı OluşturmaYazı bağlantıların farkında olmak istediğiniz etkinliğin içinde sınıflayın, içten bağlantıya geçin, bağlantı sinyalini aldıktan sonra UI bölümlerini güncelleyin. – sat

cevap

11

Alıcınızı aktivitenizin özel bir alt sınıfı olarak oluşturmayı düşünüyorum. Böylece etkinlik ve etkinlikleri faaliyetinizden kontrol edebilirsiniz. Daha sonra, sadece bir örneğini oluşturabilir ve alıcıyı yukarıda yaptığınız gibi koddan kaydedebilirsiniz.

Alıcınızı hem manifest hem de kod olarak kaydetmeniz gerekmediğini unutmayın. Bunlardan biri zor - manifesto temelde bir "statik" kayıt kodunda bunu yaparken çalışma zamanında dinamik kayıt sağlar. Ayrıca, bildirime kaydolduğunuzda, alıcınızın yeni bir örneği otomatik olarak sistemden oluşturulur, yürütülür ve sonlandırılır. Reg'de kodu yapmak belirli bir örneğe işaret etmeyi sağlar.

+0

Açıklama için çok teşekkürler. – Maggie

+0

+1 Netleştirdiğiniz için teşekkür ederiz. – AgentKnopf

+0

ama yayın alıcısını aktiviteye koymak istemiyorum ne hakkında .. ?? Bunu yapmak için başka bir yol .. ?? –