Как се различават динамичният и статичният начин за регистрация на BroadcastReceiver в Android?
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);