Πώς διαφέρουν οι δυναμικοί και στατικοί τρόποι εγγραφής 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);