Sobes.tech
Junior — Middle

Android-də BroadcastReceiver-in dinamik və statik qeydiyyat üsulları necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

Android-də BroadcastReceiver-in qeydiyyatdan keçməsinin iki yolu var — statik və dinamik.

Statik tətbiqin manifestində (AndroidManifest.xml) qeydiyyatdan keçirilir. Bu qəbul edən sistem tərəfindən aktivləşdirilir, hətta tətbiq işə salınmayıbsa belə. Bu, sistem yayım mesajlarını dinləmək üçün əlverişlidir, lakin Android 8.0 (Oreo)-dan başlayaraq, statik qeydiyyat çoxsaylı hadisələr üçün məhdudlaşdırılıb.

Dinamiki proqramda (adətən Activity və ya Service daxilində) registerReceiver() metodu ilə qeydiyyatdan keçirilir. Bu qəbul edən yalnız qeydiyyatdan keçirildiyi obyekt canlı olduğu müddətdə aktivdir və açıq şəkildə unregisterReceiver() çağırılmasını tələb edir. Dinamik qeydiyyat daha çevikdir və komponent işləyərkən yayım mesajlarını dinləməyə imkan verir.

Dinamiki qeydiyyat nümunəsi:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // hadisənin işlənməsi
    }
};

// onCreate() və ya onStart() daxilində
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// onDestroy() və ya onStop() daxilində
unregisterReceiver(receiver);