Sobes.tech
Junior — Middle

Πώς διαφέρουν οι δυναμικοί και στατικοί τρόποι εγγραφής BroadcastReceiver στο Android;

sobes.tech AI

Απάντηση από AI

Στο Android, υπάρχουν δύο τρόποι εγγραφής ενός BroadcastReceiver — στατικός και δυναμικός.

Στατικός εγγράφεται στο μανιφέστο της εφαρμογής (AndroidManifest.xml). Αυτός ο δέκτης ενεργοποιείται από το σύστημα ακόμη και αν η εφαρμογή δεν τρέχει. Είναι βολικός για την παρακολούθηση μηνυμάτων broadcast συστήματος, αλλά από το Android 8.0 (Oreo), η στατική εγγραφή περιορίζεται για τα περισσότερα γεγονότα.

Δυναμικός εγγράφεται προγραμματιστικά στον κώδικα (συνήθως σε ένα Activity ή Service) με τη χρήση της μεθόδου registerReceiver(). Αυτός ο δέκτης είναι ενεργός μόνο όσο ζει το αντικείμενο στο οποίο έχει εγγραφεί και απαιτεί ρητή κλήση unregisterReceiver(). Η δυναμική εγγραφή είναι πιο ευέλικτη και επιτρέπει την ακρόαση μηνυμάτων broadcast μόνο κατά τη διάρκεια λειτουργίας του συστατικού.

Παράδειγμα δυναμικής εγγραφής:

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