Android-приложение, показывающее белый экран перед намеренным перенаправлением - PullRequest
0 голосов
/ 03 сентября 2018

В MainActictivity проверка сохраненного сеанса и перенаправление в SecondActivity. То, что я ожидал, это показать только SecondActivity для пользователя, сохраненного в сеансе, но получить белый экран на несколько секунд и перенаправить на SecondActivity. Мой метод onCreate следующим образом

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        session= new Session(MainActivity.this);
        if(session.getData("auth").equals("true")){
            Intent i= new Intent(MainActivity.this,SecondActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(i);
            finish();
        }else{
             setContentView(R.layout.activity_main);
            }
}

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Проблема решена простым отключением предварительного просмотра окна в стиле, как показано ниже

    <item name="android:windowDisablePreview">true</item>

Потратьте несколько часов, чтобы найти решение, поэтому вот полное описание проблемы

Почему предварительный просмотр окна?

Android нужно некоторое время для загрузки данных (при запуске) из класса, ресурсов и т. Д., Чтобы преодолеть android отображает временное окно под названием Window Preview. Что дает пользователю немедленную обратную связь о том, что приложение запущено, а также дает приложению время для инициализации. Когда ваше приложение готово к запуску, система удаляет окно предварительного просмотра и отображает окна и представления вашего приложения. В результате ни один из ваших Java-кодов не выполняется при отображении начального окна.

0 голосов
/ 03 сентября 2018

setContentView не должен вступать в силу (и любое усилие для Activity), так как finish() вызывается раньше внутри onCreate, но просто для уверенности добавьте return в скобку

вы видите windowBackground цвет, который можно изменить в теме Activity

// theme for activity, not whole application, will not affect other activities
<style name="MainActivityTheme" parent="AppTheme">
    <item name="android:windowBackground">#345678</item>

Вы также можете изменить его по коду непосредственно перед вызовом super.onCreate, но на мгновение может быть виден цвет из темы (особенно на младших устройствах), и вы не хотите этого

может быть, лучший подход - это новый Activity, который будет полностью прозрачным и перенаправлять прямо на правильный Activity? или если восстановление вашей сессии слишком тяжелое, используйте что-то без визуального представления, например Service?

будьте осторожны с флагом windowIsTranslucent, потому что ваш Activity потеряет вызовы изменения конфигурации вращения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...