我遵循了Android picture-in-picture documentation。也就是说,我的PiP活动在清单中标记为android:launchMode="singleTask"
,android:resizeableActivity="true"
和android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
。
画中画效果很好。但是,我注意到我遇到了不良行为。
当我的应用收到推送时,我创建了一个PendingIntent
和Intent
的{{1}}(与PiP MyActivity
不同的Activity
)。但是,当我点击通知并使用Activity
时,Intent
会在画中画窗口中启动!
我尝试在清单中将MyActivity
添加到android:launchMode="singleTask"
中。我还尝试过以编程方式将该标志添加到MyActivity
,然后将其与Intent
一起使用。这似乎无法解决问题。
有人可以告诉我如何预防吗?
答案 0 :(得分:1)
首先,如您在google sample codes中所见,它不需要使PIP Activity
的启动模式成为singleTask。但是,您需要将启动器任务移到非PIP模式的最前面,以禁用PIP状态。
通过在通知中调用的目标onCreate()
的{{1}}方法中调用波纹管片段,您可以实现这一目标。
Activity
---------------------- 之前 ----------------- ----------------------------- 之后 ------------- -----------
答案 1 :(得分:1)
要解决此问题,我们应该在清单中为PiP taskAffinity
设置唯一的Activity
。它指示活动所属的任务。为其设置一个唯一值会将画中画Activity
与您的MainActivity
分开。
<activity
android:name=".VideoActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:taskAffinity=".VideoActivity"
android:supportsPictureInPicture="true" />
答案 2 :(得分:0)
将 android:supportsPictureInPicture="false"
添加到清单中的MyActivity。它应该可以解决您的问题
答案 3 :(得分:0)
我也遇到了这个问题,您可以尝试在MyPipActivity清单中添加"android:excludeFromRecents="true"