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