17

有没有人有任何关于在 Android O 的画中画模式下管理后台堆栈和任务的经验或建议?

进入画中画模式似乎将活动从当前任务堆栈中分离出来。退出并不能恢复它。

使用 PiP 时,Chrome 似乎可以正确处理后台堆栈,因为您进入 pip 模式,可以在其他应用程序中导航,将 pip 恢复为全屏并按返回以返回网页。在 PiP 模式下,您也不会在任务列表中看到 Chrome。我是否缺少某些东西,或者 Chrome 是否在做一些特别的事情,或者可能只对选项卡和全屏视频使用单个活动?

基本上我想恢复整个应用程序,它在我们从画中画回来时进入画中画的那一点回到堆栈。

4

1 回答 1

19

不幸的是,没有一个谷歌应用程序(YouTube、Duo、Chrome)有这个问题,因为它们往往只使用一个活动,所以当进入或离开画中画时,最近菜单中没有任务问题,因为只有一个任务中包含一个 Activity。这就是为什么当这些应用程序处于画中画模式时,您在最近的菜单中看不到任何条目的原因;它被 API 隐藏了。

如果您在应用程序中使用多个活动,那么您将遇到此问题。这尤其常见,因为大多数应用程序将在启动其应用程序的任务中使用新的 Activity 来容纳其视频播放。

我发现的最佳解决方案是让您的视频播放器 Activity 位于其自己的任务中(设置独特的任务关联)并将其从最近菜单中隐藏。这会导致进入和退出 PiP 时的预期行为,并允许用户在不干扰 PiP 任务的情况下浏览应用程序的其余部分(通过其他任务)。不幸的是,这意味着用户将无法从最近的视频中重新进入您的视频播放器;如果用户使用主页或最近按钮,视频播放器任务最终将被销毁,您的播放器活动将完成。

    <activity
            android:name=".YourVideoPlayerActivity"
            android:resizeableActivity="true"
            android:configChanges="keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation"
            android:supportsPictureInPicture="true"
            android:launchMode="singleTask"
            android:taskAffinity=".YourVideoPlayerActivityTask"
            android:excludeFromRecents="true"
            android:noHistory="true"
            android:autoRemoveFromRecents="true" />
于 2017-09-12T14:57:18.367 回答