Sobes.tech
Junior — Middle

Ինչպես են տարբերվում Android-ում BroadcastReceiver-ի դինամիկ և ստատիկ գրանցման մեթոդները։

sobes.tech AI

Պատասխան AI-ից

Android-ում կա երկու եղանակ՝ BroadcastReceiver գրանցելու համար՝ ստատիկ և դինամիկ:

Ստատիկ գրանցվում է հավելվածի մանիֆեստում (AndroidManifest.xml): Այս ընդունողը ակտիվանում է համակարգի կողմից, նույնիսկ եթե հավելվածը չի աշխատում: Դա հարմար է համակարգային հաղորդագրությունները լսելու համար, բայց Android 8.0 (Oreo)-ից սկսած, ստատիկ գրանցումը սահմանափակված է մեծ մասի դեպքերում:

Դինամիկ գրանցվում է ծրագրային կերպով կոդում (հաճախ Activity կամ Service) registerReceiver() մեթոդի միջոցով: Այս ընդունողը ակտիվ է միայն այն ժամանակ, երբ այն գրանցած օբյեկտը կենդանի է, և պահանջում է բացահայտ unregisterReceiver() կանչը: Դինամիկ գրանցումը ավելի ճկուն է և թույլ է տալիս լսել հաղորդագրությունները միայն աշխատանքի ժամանակ:

Դինամիկ գրանցման օրինակ:

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);