Sobes.tech
Junior — Middle

Androidda BroadcastReceiver'ni dinamik va statik ro'yxatdan o'tkazish usullari qanday farq qiladi?

sobes.tech AI

AIdan javob

Androidda BroadcastReceiver ni registratsiya qilishning ikki usuli bor — statik va dinamik.

Statik — bu AndroidManifest.xml faylida ro'yxatdan o'tkaziladi. Bu receiver tizim tomonidan faollashtiriladi, hatto ilova ishga tushmagan bo'lsa ham. U tizimning keng tarqalgan xabarlarini tinglash uchun qulay, ammo Android 8.0 (Oreo) dan boshlab, ko'p holatlar uchun statik ro'yxatdan o'tish cheklangan.

Dinamik — bu kodda (odatda Activity yoki Service ichida) registerReceiver() metodi yordamida dasturiy ravishda ro'yxatdan o'tkaziladi. Bu receiver faqat u ro'yxatdan o'tkazilgan ob'ekt tirik bo'lsa, faol bo'ladi va aniq unregisterReceiver() chaqirilishini talab qiladi. Dinamik ro'yxatdan o'tish ko'proq moslashuvchan bo'lib, komponent ishlayotgan paytda keng tarqalgan xabarlarni tinglash imkonini beradi.

Dinamik ro'yxatdan o'tish misoli:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // voqea bilan ishlash
    }
};

// onCreate() yoki onStart() da
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// onDestroy() yoki onStop() da
unregisterReceiver(receiver);