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