В документации сказано:
Команда mute защищена от смерти клиентского процесса: если процесс с активным запросом на отключение звука в потоке умирает, этот поток будет отключен автоматически.
Запросы на отключение звука для данного потока являются кумулятивными: AudioManager может получить несколько запросов на отключение звука от одного или нескольких клиентов, и поток будет отключен только тогда, когда будет получено одинаковое количество запросов на отключение звука.
Ну, первый абзац верен; всякий раз, когда мой процесс умирает, все потоки, которые я отключил, автоматически отключаются.
Однако, сколько бы раз я ни вызывал setStreamMute(someStream, false)
, он НИКОГДА не отключается.
В последний раз я пытался вызвать его более 1 миллиона раз после отключения звука только ОДИН раз, и НИЧЕГО не произошло!
Просто упомяну - Если я отключу звук в том же методе, в котором я его отключил - он остается отключенным. Но при следующих обращениях к тому же методу - он никогда не отключается.
Я отключаю звук в методе Broadcast Receiver onReceive, который я запускаю с помощью менеджера оповещений. Так может это потому, что мое приложение было убито за время между вызовом отключения звука и вызовом отключения звука? (Но мое приложение все еще остается в оперативной памяти)
Может ли эта проблема возникнуть из-за того, что я не сохраняю ссылку на AlarmManager (каждый раз получая разные экземпляры?)
Кто-нибудь сталкивался с этой проблемой?