我们有enterPictureInPictureMode()
方法将一个活动从其当前形式移动到画中画表示。
除了销毁活动,我们如何恢复活动到其正常状态的方法?Activity
上没有exitPictureInPictureMode()
、leavePictureInPictureMode()
或者janeGetMeOffThisCrazyPictureInPictureModeThing()
方法,并且文档似乎也没有涵盖其他替代方法。
我需要一个适用于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()
或onStart()
,但它会触发onNewIntent()
(使用您传递给startActivity()
的任何Intent
)。