任务列表和后退堆栈与Android O图片在画模式



有没有人在安卓O的PiP模式下管理后退堆栈和任务有任何经验或建议?

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

Chrome在使用PiP时似乎可以正确处理后退堆栈,因为您进入pip模式,可以在其他应用程序中导航,将pip恢复为全屏并按返回以最终返回网页。当Chrome处于PiP模式时,您也不会在任务列表中看到Chrome。我是否遗漏了某些内容,或者 Chrome 是否做了一些特别的事情,或者可能只对标签页和全屏视频使用了一个活动?

基本上,我想恢复整个应用程序,并且在我们从PiP返回时输入PiP时它是后堆栈。

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

如果您在应用程序中使用多个活动,则会遇到此问题。考虑到大多数应用程序将在启动其应用程序的任务中使用新的活动来容纳其视频播放,这一点尤其常见。

我找到的最佳解决方案是使您的视频播放器活动位于其自己的任务中(设置唯一的任务相关性(并将其从"最近"菜单中隐藏。这会导致在进入和退出 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" />

最新更新