Я пытаюсь сделать наше видео приложение для поддержки многопоточного режима Android N. Я обнаружил, что жизненный цикл активности запутывается в многооконном режиме. Явление - это когда наши макеты приложений на верхнем экране со всем экраном на портрете, затем я нажимаю кнопку "Домой", а верхнее приложение onPause()
, но onStop()
не вызывается.
Согласно руководству Google https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle, видеоприложение должно приостанавливать воспроизведение видео в onStop()
обратном вызове, а не onPause()
обратном вызове.
В этой ситуации нажата кнопка "домой", действие переходит в фоновый режим и становится недоступным для пользователя, наше приложение должно приостанавливать воспроизведение видео, но мы не можем получить обратный вызов onStop()
. Между тем, активность не запускает обратный вызов onMultiWindowChanged()
, это означает, что активность все еще находится в режиме многострочного просмотра, хотя она находится в фоновом режиме. В этом случае isInMultiWindowMode()
вернет true
.
Такая же проблема возникает, когда приложение находится на левом экране с полным экраном в ландшафте.
Я искал этот вопрос и нашел, что у кого-то есть проблемы с публикацией в google, но не обрабатываются в выпуске Android Nougat.
Итак, когда самое подходящее время для приостановки воспроизведения видео в такой ситуации? Если мы приостановим видео в обратном вызове onPause()
, но действие может быть видимым пользователю в режиме многострочного просмотра. Если мы этого не сделаем, мы не сможем получить обратный вызов onStop()
в этом случае.
Есть ли подходящее обходное решение для таких случаев?