Sobes.tech
Junior

Ի՞նչ է BroadcastReceiver-ը Android-ում։

sobes.tech AI

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

Սա բաղադրիչ է, որը արձագանքում է համակարգային կամ օգտագործողի կողմից ուղարկված բաշխիչ հաղորդագրություններին (broadcasts): Այն չունի օգտագործողի ինտերֆեյս և նախատեսված է ֆոնային գործողությունների իրականացման համար որոշակի իրադարձությունների արձագանքման ժամանակ:

Հիմնական հատկանիշներ:

  • արձագանքում է որոշակի գործողությամբ (action) նախատեսված նպատակների (Intents)
  • կարճաժամկետ բաղադրիչ է, նրա onReceive() մեթոդը կատարվում է կարճ ժամանակահատվածում
  • չի նախատեսված երկարատև գործողությունների համար, եթե անհրաժեշտ է երկարատև աշխատանք, պետք է գործարկել Service-ը onReceive()-ից
  • կարող է լինել գրանցված ստատիկ կերպով մանֆեստում կամ դինամիկ կերպով կոդում

Օգտագործման օրինակներ:

  • արձագանքում է ցանցի կարգավիճակի փոփոխությանը (android.net.conn.CONNECTIVITY_CHANGE)
  • արձագանքում է համակարգի բեռնման ժամանակ (android.intent.action.BOOT_COMPLETED)
  • մուտքային SMS-ների մշակումը
  • օգտագործողի հաղորդագրությունների ստացումը, որոնք ուղարկվում են այլ բաղադրիչներից կամ այլ հավելվածներից

Գրանցում մանֆեստում:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" որպեսզի այլ հավելվածներ կարողանան ուղարկել intents
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Գրանցում կոդում:

// Activity կամ Service-ում
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// onDestroy() կամ onStop()-ում - կարևոր է գրանցումը չեղարկել!
unregisterReceiver(receiver);

BroadcastReceiver դասը:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Այստեղ կատարվում է կոդը Intent ստանալիս
        // Օրինակ՝
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Անհատական գործողություն ստացվեց!", Toast.LENGTH_SHORT).show();
        }
    }
}