У нас есть 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()).