10

我正在尝试使我们的视频应用程序支持 Android N 多窗口模式。我发现活动生命周期在多窗口模式下变得混乱。现象是当我们的app在全屏竖屏的情况下布局在顶屏,然后我点击Home键,上面的apponPause()调用了却onStop()没有调用。

根据谷歌指南https://developer.android.com/guide/topics/ui/multi-window.html#lifecycleonStop() ,视频应用应该在回调而不是回调中暂停视频播放onPause()

在这种情况下,按下主页按钮,活动进入后台并且对用户不可见,我们的应用程序应该暂停视频播放但我们无法获得onStop()回调。同时,活动不会触发onMultiWindowChanged()回调,这意味着活动虽然在后台,但仍处于多窗口模式。在这种情况下isInMultiWindowMode()将返回true

当应用程序位于左侧屏幕且整个屏幕为横向时,也会出现同样的问题。

我搜索了这个问题,发现有人已经向谷歌发布了问题,但在 Android Nougat 版本中没有处理。

https://code.google.com/p/android/issues/detail?id=215650&can=1&q=multi%20window%20onstop&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened

那么,在这种情况下,什么时候暂停视频播放最合适呢?如果我们在onPause()回调中暂停视频,但在多窗口模式下,用户可能会看到该活动。如果我们不这样做,在这种情况下我们将无法获得onStop()回调。对于这种情况,是否有一些适当的解决方法?

4

2 回答 2

2

当您在多窗口模式下点击主页按钮时,系统处于过渡状态,允许用户在您的应用程序继续运行时选择要启动的应用程序(如果您是最顶层的应用程序,您会注意到您可以仍然可以从您的应用中看到状态栏)。进入此瞬态模式没有关联的回调,您不应在进入此瞬态模式时更改您的行为。

相反,您应该继续播放任何视频- 只有在收到回调时才停止视频onStop()

于 2016-09-28T04:27:07.727 回答
1

根据官方文档MultiWinodw LifeCycle

"多窗口模式不会改变活动生命周期。 "

在多窗口模式下,用户最近交互的唯一活动将是最顶部的活动,其他活动将进入onPause()模式,因为它是部分可见的。当用户将尝试与其他将进入onResume()状态的活动进行交互时,它将成为最顶层的活动,而其余活动将进入onPause()模式。

现在对于音乐播放器,他们已经明确提到,如果您支持 MultiWindow 模式,即使onPause()会调用方法,您也应该继续播放音乐。

只有在调用 onStop() 时才停止视频

于 2016-09-28T04:38:06.567 回答