在Android N多窗口模式下按下主页button时,未调用Activity onStop()

我正试图让我们的video应用程序支持Android N多窗口模式。 我发现活动生命周期在多窗口模式下变得混乱。 这种现象是当我们的应用程序在屏幕上的整个屏幕纵向布局,然后我点击主页button,上面的应用程序onPause()调用,但onStop()没有调用。

根据谷歌指南https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle ,video应用程序应暂停在onStop()callback,而不是onPause()callbackvideo播放。

在这种情况下,主页button被按下,活动变为背景,对用户不可见,我们的应用程序应该暂停video播放,但我们不能得到onStop()callback。 同时,活动不会触发onMultiWindowChanged()callback,这意味着活动仍然处于多窗口模式,尽pipe它在后台。 在这种情况下, isInMultiWindowMode()将返回true

当应用程序在左侧屏幕中,整个屏幕处于横向时,将发生同样的问题。

我已经search了这个问题,并发现有人有alreay发布谷歌,但没有在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

那么,在这种情况下,什么时候该暂停我们的video播放呢? 如果我们在onPause()callback中暂停video,但在多窗口模式下用户可以看到该活动。 如果我们不这样做,在这种情况下,我们无法获得onStop()callback。 有这种情况下的一些适当的解决方法?

Solutions Collecting From Web of "在Android N多窗口模式下按下主页button时,未调用Activity onStop()"

当您在多窗口模式下点击主页button时,系统处于瞬态状态,允许用户在应用程序继续运行时select一个应用程序启动(如果您是最顶级的应用程序,则会注意到您可以仍然看到你的应用程序的状态栏)。 进入这个瞬态模式没有任何callback,进入瞬态模式时不应该改变你的行为。

相反, 您应该继续播放任何video – 只有在您收到onStop()的回叫时停止播放video

根据官方文件MultiWinodw LifeCycle :

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

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

现在在音乐播放器的情况下,他们已经明确提到, 即使在支持MultiWindow模式时,即使调用了onPause()方法也应该继续播放音乐

只有在onStop()被调用时才停止video