Почему приемник вещания вызывается дважды в Jetpack Compose? ⇐ Android
Почему приемник вещания вызывается дважды в Jetpack Compose?
Я столкнулся с проблемой в своем приложении Jetpack Compose, из-за которой приемник широковещательной рассылки ACTION_STATE_CHANGED вызывается дважды, когда Bluetooth выключен. У меня есть составная функция BluetoothStateListener, которая регистрирует широковещательный приемник для прослушивания изменений в состоянии Bluetooth. Однако, когда я выключаю Bluetooth, функция onReceive приемника вещания вызывается дважды, что приводит к неожиданному поведению.
класс MainActivity : ComponentActivity() { переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var isBluetoothEnable, запомнив {mutableStateOf(false)} ScreenOne (isBluetoothEnable) { isBluetoothEnable = оно } } } } @Композитный fun ScreenOne(isBluetoothEnable: Boolean, onBluetoothChange: (Boolean) -> Unit) { Text(text = "Привет, мир isBluetoothEnable $isBluetoothEnable") BluetoothStateListener { onBluetoothChange (оно) Log.i("BluetoothStateListener", "isBluetoothEnable $it") } } @Композитный забавный BluetoothStateListener( контекст: Контекст = LocalContext.current, isBluetoothEnable: (логическое значение) -> Единица измерения ) { DisposableEffect(Единица измерения) { val получатель = объект: BroadcastReceiver() { переопределить fun onReceive(context: Context?, Intent: Intent?) { если (намерение?.действие == BluetoothAdapter.ACTION_STATE_CHANGED) { состояние вал = Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) isBluetoothEnable (состояние == BluetoothAdapter.STATE_ON) } } } val filter = IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED) context.registerReceiver(приемник, фильтр) onDispose { context.unregisterReceiver(приемник) } } } В журнале печати я вижу, что функция журнала печатает значение
2024-02-29 22:44:16.938 15425-15425 BluetoothStateListener com.example.simplecomposenavigation I isBluetoothEnable false 2024-02-29 22:44:17.215 15425-15425 BluetoothStateListener com.example.simplecomposenavigation I isBluetoothEnable true
Я столкнулся с проблемой в своем приложении Jetpack Compose, из-за которой приемник широковещательной рассылки ACTION_STATE_CHANGED вызывается дважды, когда Bluetooth выключен. У меня есть составная функция BluetoothStateListener, которая регистрирует широковещательный приемник для прослушивания изменений в состоянии Bluetooth. Однако, когда я выключаю Bluetooth, функция onReceive приемника вещания вызывается дважды, что приводит к неожиданному поведению.
класс MainActivity : ComponentActivity() { переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var isBluetoothEnable, запомнив {mutableStateOf(false)} ScreenOne (isBluetoothEnable) { isBluetoothEnable = оно } } } } @Композитный fun ScreenOne(isBluetoothEnable: Boolean, onBluetoothChange: (Boolean) -> Unit) { Text(text = "Привет, мир isBluetoothEnable $isBluetoothEnable") BluetoothStateListener { onBluetoothChange (оно) Log.i("BluetoothStateListener", "isBluetoothEnable $it") } } @Композитный забавный BluetoothStateListener( контекст: Контекст = LocalContext.current, isBluetoothEnable: (логическое значение) -> Единица измерения ) { DisposableEffect(Единица измерения) { val получатель = объект: BroadcastReceiver() { переопределить fun onReceive(context: Context?, Intent: Intent?) { если (намерение?.действие == BluetoothAdapter.ACTION_STATE_CHANGED) { состояние вал = Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) isBluetoothEnable (состояние == BluetoothAdapter.STATE_ON) } } } val filter = IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED) context.registerReceiver(приемник, фильтр) onDispose { context.unregisterReceiver(приемник) } } } В журнале печати я вижу, что функция журнала печатает значение
2024-02-29 22:44:16.938 15425-15425 BluetoothStateListener com.example.simplecomposenavigation I isBluetoothEnable false 2024-02-29 22:44:17.215 15425-15425 BluetoothStateListener com.example.simplecomposenavigation I isBluetoothEnable true
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Приемник вещания для проверки подключения к Интернету в приложении для Android
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Приемник вещания для проверки подключения к Интернету в приложении для Android
Anonymous » » в форуме Android - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-