Sobes.tech
Junior — Middle

Androidда BroadcastReceiver'ни динамикалык жана статикалык каттоо ыкмалары кандай айырмаланат?

sobes.tech AI

AIден жооп

Androidде BroadcastReceiver каттоо эки жол менен жүргүзүлөт — статикалык жана динамикалык.

Статикалык колдонмонун манифестинде (AndroidManifest.xml) катталат. Бул кабылдоочу систем тарабынан иштетилет, колдонмо иштебесе да. Ал системдик кеңири тараган broadcast билдирүүлөрүн угуу үчүн ыңгайлуу, бирок Android 8.0 (Oreo) версиясынан баштап, статикалык каттоо көпчүлүк окуялар үчүн чектелген.

Динамикалык программалык коддо (көбүнчө Activity же Service ичинде) registerReceiver() методу аркылуу катталат. Бул кабылдоочу гана катталган объект тирүү болгондо иштейт жана ачыкча unregisterReceiver() чакыруусун талап кылат. Динамикалык каттоо көбүрөөк ийкемдүү жана компонент иштеп жатканда broadcast билдирүүлөрүн угууга мүмкүндүк берет.

Динамикалык каттоонун мисалы:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // окуяны иштетүү
    }
};

// onCreate() же onStart() ичинде
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// onDestroy() же onStop() ичинде
unregisterReceiver(receiver);