У меня есть действие, которое запускает системную службу вибратора в его методе onCreate, затем, когда пользователь нажимает кнопку, он отменяет вибратор, а затем вызывает finish (), чтобы закрыть действие.
Это действие вызывается через AlarmManager, поэтому, когда оно закрывается, оно вернет пользователя в любое приложение, которое у него в данный момент было открыто (не обязательно мое).
Проблема, с которой я сталкиваюсь, заключается в том, что моя деятельность находится в ландшафтном режиме, и пользователь попадает на экран, который не поддерживает альбомную ориентацию (например, домашний экран), когда действие закрывается, мое приложение переключается в портретный режим и вызывает onCreate ( ) перед закрытием экрана. Итак, шаги, вызывающие эту проблему, следующие ...
- Действие запускается в портретном режиме.
- вызывается метод onCreate, который запускает вибратор
- Пользователь переворачивает телефон в альбомный режим.
- onCreate вызывается снова, но поскольку onSaveInstanceState не имеет значения null, я могу пропустить повторный запуск вибратора
- Пользователь нажимает кнопку, чтобы закрыть экран
- Я вызываю vibrator.cancel ()
- Я называю финиш ()
- Поскольку экран, на котором пользователь будет возвращен на экран, который не поддерживает альбомный режим, мое действие вызывает onCreate ()
- saveInstanceState равен нулю, поэтому вибратор снова запускается
- Мое приложение закрыто, а вибратор все еще работает
В настоящее время я могу придумать единственный способ исправить это - сделать так, чтобы моя деятельность поддерживала только портретный режим, но я бы хотел избежать этого, если смогу. Кто-нибудь знает, как я могу предотвратить вызов onCreate () после вызова finish ()?