У нас есть enterPictureInPictureMode()
для перемещения активности из ее текущей формы в представление "картинка в картинке" .
Каковы средства, с помощью которых мы возвращаем это, возвращая активность в нормальное состояние, помимо уничтожения активности? В Activity
нет метода exitPictureInPictureMode()
, leavePictureInPictureMode()
или janeGetMeOffThisCrazyPictureInPictureModeThing()
, и в документации, похоже, не рассматривается альтернатива.
Меня интересует решение для Android O, для режима "картинка в картинке" на мобильных устройствах, хотя, если это работает и для Android TV, замечательно!
UPDATE 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
singleton. Кажется, это не вызывает onStop()
или onStart()
, но вызывает триггер onNewIntent()
(с любым Intent
вы переходите к startActivity()
).