Sobes.tech
Junior

Android'de BroadcastReceiver nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bu, sistem veya kullanıcı tarafından yayınlanan broadcast mesajlarına yanıt veren bir bileşendir. Kullanıcı arayüzü yoktur ve belirli olaylara yanıt olarak arka plan işlemleri yapmak üzere tasarlanmıştır.

Ana özellikler:

  • Belirli bir eylem (action) ile Intent'lere yanıt verir.
  • Kısa ömürlü bir bileşen olup, onReceive() yöntemi kısa bir süre içinde çalışır.
  • Uzun süreli işlemler için tasarlanmamıştır. Uzun süren işler gerekiyorsa, onReceive() içinden Service başlatılmalıdır.
  • Manifestoda statik olarak veya kodda dinamik olarak kaydedilebilir.

Kullanım örnekleri:

  • Ağ durumu değişikliklerine yanıt verme (android.net.conn.CONNECTIVITY_CHANGE).
  • Sistem açılışına yanıt verme (android.intent.action.BOOT_COMPLETED).
  • Gelen SMS'leri işleme.
  • Diğer uygulama bileşenleri veya diğer uygulamalar tarafından gönderilen özel mesajları alma.

Manifestoda kayıt:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" diğer uygulamaların intent göndermesine izin verir
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Koddaki kayıt:

// Activity veya Service içinde
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// onDestroy() veya onStop() içinde - kaydı iptal etmek önemlidir!
unregisterReceiver(receiver);

BroadcastReceiver sınıfı:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Intent alındığında burada kod çalışır
        // Örneğin:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Özel eylem alındı!", Toast.LENGTH_SHORT).show();
        }
    }
}