OnStop вызван до onStart

У меня есть активность, вызываемая из AlarmManager. Это тревожное сообщение.

Когда Activity вызывается из Key Guard, жизненный цикл переходит из onCreate -> onStart -> onResume -> onPause -> onStop, а затем возвращается к onCreate -> onStart -> onResume.

Поскольку это тревожная активность, я поместил строку MediaPlayer.stop внутри OnStop Activity, но теперь звук будильника прекращается сразу после его запуска.

Если я помещаю MediaPlayer.stop внутри onDestroy, я получаю правильное поведение, но если пользователь нажимает кнопку «домой», активность исчезает, и звук продолжает играть.

Любой может сказать, почему onPause и onStop вызываются во время этой ситуации?

EDIT: после некоторого расследования в журнале я нашел эту строку:

11-26 17:39:01.273: I/ActivityManager(385): Activity reported stop, but no longer stopping: ActivityRecord{41827a90 u0 net.xisberto.workschedule/.AlarmMessageActivity} 

Хорошо, через год я понял, что этот вопрос так и не получил ответа, хотя мне пришлось справиться с этой проблемой, так что вот оно:

Теперь я onResume MediaPlayer во время onResume , но я не запускаю его снова, если он уже играет:

 @Override protected void onResume() { super.onResume(); ... if (!mMediaPlayer.isPlaying()) { mMediaPlayer.start(); } ... } 

И я останавливаю его во время onStop , но только если Activity isFinishing :

 @Override protected void onStop() { super.onStop(); if (isFinishing()) { if (mMediaPlayer != null) { mMediaPlayer.stop(); mMediaPlayer.release(); mMediaPlayer = null; } } else { ... } } 

Поскольку во время описанной ситуации Activity не заканчивается, но перезапуск (смена конфигурации, я думаю), MediaPlayer не останавливается.

Мой код не совсем такой, потому что я использую некоторые другие функции, и я использую Notification, чтобы вернуть пользователя в Activity. Полный код находится здесь: https://github.com/xisberto/workschedule/blob/master/src/net/xisberto/work_schedule/AlarmMessageActivity.java

Правильно поверните устройство без обработки этого события.

Вы можете справиться с этим с небольшой модификацией вашего манифеста:

 <activity android:name=".MyActivity" android:configChanges="orientation" android:label="@string/app_name"> 
Intereting Posts
Загружать изображение и аудио в один запрос в android Можем ли мы использовать Tomcat Server в приложении для Android Android щепотку увеличить большое изображение, эффективность памяти без потери деталей Вырезание Action Bar с помощью SlidingMenu и Overlay of ActionBar Sherlock Как я могу показать ProgressBar только после минимальной задержки? ServerSocket не принимает на эмулятор дроидов Загрузка ресурсов изображения в виде RGB 565 SetOnItemClickListener () не работает на пользовательском ListView @ Android Как обратиться к лямбда изнутри? Okhttp refresh expired token, когда несколько запросов отправляются на сервер Каков пользовательский агент Chrome для Android после того, как пользователь переключит его на настольную версию? Цвет выбранной вкладки в виде нижней навигации Что означает пакет в Android? Как сохранить положение прокрутки RecyclerView в Android? Проблема связи при создании статических и общих библиотек с помощью Android NDK