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