Junior
Android-ში რა არის BroadcastReceiver?
sobes.tech AI
პასუხი AI-სგან
ეს კომპონენტი რეაგირებს სისტემურ ან მომხმარებლის მიერ გამავრცელებელ შეტყობინებებზე (broadcasts). მას არ აქვს მომხმარებლის ინტერფეისი და განკუთვნილია ფონზე ოპერაციების შესრულებისთვის გარკვეული მოვლენების პასუხად.
ძირითადი მახასიათებლები:
- რეაგირებს მიზნებზე (Intents) გარკვეული მოქმედებით (action)
- მოკლევადიანი კომპონენტია, მისი
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();
}
}
}