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