Jak se liší dynamická a statická registrace BroadcastReceiver v Androidu?
sobes.tech AI
Odpověď od AI
Na Androidu existují dva způsoby registrace BroadcastReceiver — statický a dynamický.
Statický je registrován v manifestu aplikace (AndroidManifest.xml). Tento přijímač je aktivován systémem i když aplikace neběží. Je vhodný pro poslouchání systémových broadcast zpráv, ale od Androidu 8.0 (Oreo) je statická registrace omezena pro většinu událostí.
Dynamický je registrován programově v kódu (obvykle v Activity nebo Service) pomocí metody registerReceiver(). Tento přijímač je aktivní pouze dokud je živý objekt, ve kterém je zaregistrován, a vyžaduje explicitní volání unregisterReceiver(). Dynamická registrace je flexibilnější a umožňuje poslouchat broadcast zprávy pouze během běhu komponenty.
Příklad dynamické registrace:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// zpracování události
}
};
// V onCreate() nebo onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// V onDestroy() nebo onStop()
unregisterReceiver(receiver);