Можно ли проверить, была ли трансляция отправлена ​​в липком режиме? Может ли он быть прерван/удален?

Можно ли проверить, была ли передача широковещания в липком режиме?

Можно ли полностью прервать/удалить липкую трансляцию? Если да, то можно ли это сделать как для обычных, так и для упорядоченных передач?

Ответ 1

В onReceive() вы можете использовать следующие вызовы:

isInitialStickyBroadcast() - Это скажет вам, была ли передача, которую вы сейчас обрабатываете, была отправлена ​​как "липкая" и была текущей, когда был зарегистрирован BroadcastReceiver.

isOrderedBroadcast() - Это скажет вам, была ли передача, которую вы сейчас обрабатываете, была отправлена ​​как "упорядоченная" трансляция.

Если вы просто хотите посмотреть, есть ли "липкая" трансляция, вы можете позвонить

registerReceiver (BroadcastReceiver receiver, IntentFilter filter)

и поставьте null как параметр receiver. Это вернет любую "липкую" трансляцию без фактической регистрации получателя.

Вы можете удалить липкую трансляцию, используя:

removeStickyBroadcast(Intent intent)

Однако ИМХО будет контрпродуктивным. Обычно "липкие" трансляции отправляются, чтобы указать текущее состояние. Поэтому удаление этого означает, что приложение не может определить текущее состояние.