Я немного смущен тем, как ключевые события (клавиша возврата, клавиши громкости) связаны с представлениями в Android.
Возьмем, к примеру, проблему, которая у меня сейчас есть:
Работает нормально
- Создать макет (например, относительный макет)
- Добавить представление в макет (GL SurfaceView)
- Запустите приложение и подождите, пока все загрузится (и будет создан GLSurfaceView)
- Нажмите клавишу домой
- Перезапустить приложение
- Нажмите назад, чтобы выйти
Не работает нормально
- Создать макет (например, относительный макет)
- Добавить представление в макет
- Запустите приложение и нажмите клавишу Home, прежде чем GLSurfaceView будет полностью создан/отображен
- Быстро снова запустите приложение до того, как GLSurfaceView будет полностью создан/отображен
- Дождитесь отображения SurfaceView
- Хотя сенсорные события работают, клавиши больше не работают, и приложение нельзя закрыть
почему это? Есть ли способ вернуть фокус к этому представлению? (если «фокус» является правильной терминологией в этом примере).
я пробовал
myGLView.requestFocus();
Я также пробовал различные другие методы, но, похоже, ничего не работает - наверняка должен быть быстрый и простой способ убедиться, что ключевые события работают с видимым в данный момент GLSurfaceView?