Sobes.tech
Junior — Middle

Чӣ гуна фарқ мекунад сабт кардани 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);