Активность не становится полностью захватывающей после восстановления от уничтожения (только леденец на палочке)
Когда моя заявка destroyed
и затем возобновление, черная полоса появляется там, где в противном случае были бы кнопки навигации. Мое приложение предназначено для полноэкранного режима без кнопок навигации, поэтому эта панель блокирует просмотр некоторых моих материалов. Я смог воспроизвести это только на Lollipop (не KitKat) и только тогда, когда мое приложение проходит уничтожение (не просто остановка и запуск).
Я что-то упускаю или неправильно настраиваю для Lollipop? Я отладил и убедился, что мои вызовы для установки флагов делаются в обоих onCreate
а также onWindowFocusChanged
всякий раз, когда моя деятельность создается, будь то после уничтожения или совершенно новый экземпляр.
Если я уйду и вернусь к занятию или поверну экран, панель исчезнет, и я все увижу как обычно.
Обновление - не имеет значения, подаю ли я заявку FLAG_FULLSCREEN
или же FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
, Также можно нажимать кнопки под черной полосой, после чего черная полоса исчезает перед загрузкой следующего действия.
Скриншот, где я выделяю черную полосу и показываю, что я должен увидеть под ней:
Вот флаги, которые я установил для полноэкранного режима на моем onCreate()
метод.
mDecorView = getWindow().getDecorView();
// call before setContentView to avoid system bars briefly showing
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
System.out.println("checking os version");
if (currentapiVersion >= Build.VERSION_CODES.KITKAT) {
System.out.println("KitKat or newer");
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
);
} else{
System.out.println("Older than KitKat");
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
Здесь я делаю то же самое, чтобы обеспечить полноэкранный режим onWindowFocusChanged()
@SuppressLint("NewApi")
@Override
public void onWindowFocusChanged(boolean hasFocus){
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= Build.VERSION_CODES.KITKAT) {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
);
} else{
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
}