我们必须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())。