setStreamMute never unmutes

В документации сказано:

Команда mute защищена от смерти клиентского процесса: если процесс с активным запросом на отключение звука в потоке умирает, этот поток будет отключен автоматически.

Запросы на отключение звука для данного потока являются кумулятивными: AudioManager может получить несколько запросов на отключение звука от одного или нескольких клиентов, и поток будет отключен только тогда, когда будет получено одинаковое количество запросов на отключение звука.

Ну, первый абзац верен; всякий раз, когда мой процесс умирает, все потоки, которые я отключил, автоматически отключаются. Однако, сколько бы раз я ни вызывал setStreamMute(someStream, false), он НИКОГДА не отключается. В последний раз я пытался вызвать его более 1 миллиона раз после отключения звука только ОДИН раз, и НИЧЕГО не произошло!

Просто упомяну - Если я отключу звук в том же методе, в котором я его отключил - он остается отключенным. Но при следующих обращениях к тому же методу - он никогда не отключается.

Я отключаю звук в методе Broadcast Receiver onReceive, который я запускаю с помощью менеджера оповещений. Так может это потому, что мое приложение было убито за время между вызовом отключения звука и вызовом отключения звука? (Но мое приложение все еще остается в оперативной памяти)

Может ли эта проблема возникнуть из-за того, что я не сохраняю ссылку на AlarmManager (каждый раз получая разные экземпляры?)

Кто-нибудь сталкивался с этой проблемой?

5
задан Jong 27 October 2011 в 19:32
поделиться