Дождитесь взаимодействия с пользователем, прежде чем завершить 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 для вашего экрана просмотра. А в реализации слушателя вы можете написать код, показывающий заставку. Этот код будет вызываться только тогда, когда пользователь нажимает.