我们必须enterPictureInPictureMode()
将活动从其当前形式转变为画中画表示。
除了破坏活动之外,我们通过什么方式恢复它,将活动恢复到正常状态?上没有exitPictureInPictureMode()
, leavePictureInPictureMode()
, 或janeGetMeOffThisCrazyPictureInPictureModeThing()
方法Activity
,并且文档似乎没有涵盖替代方法。
我对适用于 Android O 的解决方案感兴趣,适用于移动设备上的画中画模式,不过如果它也适用于 Android TV,那就太好了!
更新 2017-04-08:如果您想要在用户单击 X 按钮退出画中画模式时返回正常模式,您可以执行以下操作:
@Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
super.onPictureInPictureModeChanged(isInPictureInPictureMode);
if (!isInPictureInPictureMode) {
getApplication().startActivity(new Intent(this, getClass())
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
}
}
关键位是调用startActivity()
以再次启动当前活动FLAG_ACTIVITY_REORDER_TO_FRONT
。对于一个singleTask
活动,您需要在一些非Activity
上下文中调用它,例如Application
单例。这似乎不会触发onStop()
or onStart()
,但确实会触发onNewIntent()
(无论Intent
您传递给startActivity()
)。