Дождитесь взаимодействия с пользователем, прежде чем завершить onCreate()

В моем приложении я настроил все в onCreate, а затем запустил Async Task, которая загружает все мои ресурсы и т. Д. Сразу после запуска Async Task я добавляю заставку в свой макет. Когда все загрузится, заставка будет закрыта, а мой Open GL Renderer обнаружен внизу.

То, что я пытаюсь сделать, это добавить диалоговое окно (в основном, другой класс View, который отображает растровое изображение). И я не хочу, чтобы что- либо из Splash происходило до тех пор, пока пользователь не нажмет на экран в моем диалоговом окне.

Это будет что-то вроде этого (обратите внимание, это всего лишь отрывок из моего реального onCreate, но должно быть достаточно, чтобы проиллюстрировать проблему)

public void onCreate(Bundle savedInstanceState){

        SplashScreen splash = new SplashScreen (getApplication(), width, height);
        ConsentDialog consentDialog = new ConsentDialog(getApplication(), width, height);

        //Add the consent dialog
        layout.addView(consentDialog);

        setContentView(layout);

        super.onCreate(savedInstanceState);

        //Splashscreen
        backgroundResources = new MyAsync(newBundle);
        backgroundResources.execute(); 
        layout.addView(splash);
}

Однако, когда я запускаю вышеописанное, он показывает заставку, загружает все, затем удаляет заставку, оставляя диалоговое окно позади.

Как я могу сделать паузу (или что-то, что дает эффект приостановки), метод onCreate сразу после setContentView, пока пользователь не коснется экрана? (Обратите внимание, что я жду события касания, используя метод onTouch(View v, MotionEvent) в моем объекте acceptDialog.

По сути, асинхронность не должна начинаться, пока пользователь не коснется экрана. Если это невозможно, что я могу сделать, чтобы добиться чего-то, что дало бы желаемый эффект?

2 ответа

Решение

Как я могу сделать паузу (или что-то, что дает эффект приостановки), метод onCreate сразу после setContentView, пока пользователь не нажал клавишу?

Вы не

Обратите внимание, я жду нажатия клавиши, используя метод onTouch(View v, MotionEvent) в моем объекте sentDialog

Поместите свою работу, которая должна ждать логику "пока пользователь не коснется экрана" в onTouch()или в методе, вызванном из onTouch(),

На момент создания, приложение на самом деле не активно (видимое или интерактивное) для пользователя.

Я думаю, что все, что вы можете сделать, это просто ждать взаимодействия пользователя (постукивания), прежде чем показывать заставку.

Активность определяется событиями. Вы должны установить (добавить) onClickListener или onTouchListener для вашего экрана просмотра. А в реализации слушателя вы можете написать код, показывающий заставку. Этот код будет вызываться только тогда, когда пользователь нажимает.

Другие вопросы по тегам