图片模式下 Android O 图片的任务列表和回栈
Posted
技术标签:
【中文标题】图片模式下 Android O 图片的任务列表和回栈【英文标题】:Task List and Back Stack with Android O Picture in Picture mode 【发布时间】:2017-12-24 13:43:29 【问题描述】:有没有人有任何关于在 android O 的画中画模式下管理后台堆栈和任务的经验或建议?
进入画中画模式似乎会将活动从当前任务堆栈中分离出来。退出并不能恢复它。
Chrome 在使用 PiP 时似乎可以正确处理后台堆栈,因为您可以进入 pip 模式,可以在其他应用程序中导航,将 pip 恢复为全屏并按返回以返回网页。在 PiP 模式下,您也不会在任务列表中看到 Chrome。是否有我遗漏的东西,或者 Chrome 是否在做一些特殊的事情,或者可能只对标签和全屏视频使用单个活动?
基本上我想恢复整个应用程序,它在我们从画中画返回时进入画中画的那一点的回栈。
【问题讨论】:
我也有同样的问题,你有解决这个问题的办法吗? 【参考方案1】:不幸的是,所有的 Google 应用程序(YouTube、Duo、Chrome)都没有这个问题,因为它们往往只使用一个 Activity,因此当进入或离开 PiP 时,最近菜单中没有任务问题,因为只有曾经有一个单一的任务,其中有一个活动。这就是为什么当这些应用程序处于画中画模式时,您在最近的菜单中看不到任何条目的原因;它被 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" />
【讨论】:
我在清单中有类似的活动参数。但是,将最近应用程序中的新活动视为一项新任务。 PS 由于一些限制,我没有使用 noHistory 属性。 谢谢,android:taskAffinity 和 android:excludeFromRecents 为我完成了这项工作。以上是关于图片模式下 Android O 图片的任务列表和回栈的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot+ajax+formData实现图片上传和回显