Почему приемник вещания вызывается дважды в Jetpack Compose?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему приемник вещания вызывается дважды в Jetpack Compose?

Сообщение Anonymous »


Я столкнулся с проблемой в своем приложении 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»