有没有人在Android O的PiP模式下管理后台堆栈和任务有任何经验或建议?
进入PiP模式似乎将活动与当前任务堆栈分离。退出并没有恢复它。
使用PiP时,Chrome似乎可以正确处理后筹码,因为您可以进入点子模式,可以浏览其他应用,将点数恢复到全屏,然后按回以最终返回到网页。在PiP模式下,您也无法在任务列表中看到Chrome。是否有我缺少的东西,或者Chrome是否正在做一些特殊的事情,或者可能只使用Tab和全屏视频的单一活动?
基本上我想恢复整个应用程序,并且当我们从PiP回来时我们进入PiP的时候它已经回来了。
答案 0 :(得分:8)
不幸的是,Google应用程序(YouTube,Duo,Chrome)都没有这个问题,因为它们往往只使用一个Activity,因此在进入或离开PiP时,最新菜单中没有任务问题,因为只有曾经只有一个单一任务的单一任务。这就是为什么当这些应用程序处于PiP模式时,您在最近菜单中看不到任何条目;它被API隐藏。
如果您在应用中使用多个活动,则会遇到此问题。这是特别常见的,因为大多数应用程序将在启动其应用程序以容纳其视频播放的任务中使用新的活动。
我找到的最佳解决方案是让您的视频播放器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" />