Я расширяю Cocos2dxActivity, и в onCreate я показываю фрагмент DialogFragment с некоторыми элементами GDPR. Единственные события жизненного цикла, которые переопределяются моим пользовательским DialogFragment, - это onSaveInstanceState () и onCreateDialog (). Мой диалог действительно имеет button.requestFocus при запуске.
Если экран телефона заблокирован во время запуска приложения, все сенсорные события будут отменены.
W/ViewRootImpl[GDPR Dialog Title]: Dropping event due to no window focus: MotionEvent { action=ACTION_DOWN, ...
W/ViewRootImpl[GDPR Dialog Title]: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, ...
а также
Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_VOLUME_DOWN, ...
Если я не показываю диалоговое окно, я не могу воспроизвести ошибку.
Если в приложении нет кокосов, я не могу воспроизвести ошибку.
Блокировка телефона после запуска приложения не воспроизводит ошибку.
Перемещение кода, отображающего диалог, в onStart () или onResume () ничего не меняет.
Я пытался закомментировать различные части функций onResume () и onPause () Cocos2dxActivity и заставлять запускать код возобновления, даже если у cocos нет фокуса, но это тоже ничего не изменило.
Вот урезанный логкат, содержащий только то, что кажется актуальным для этой проблемы
[Приложение запускается]
D/Cocos2dxActivity: onResume()
D/AudioFocusManager: requestAudioFocus succeed
[Телефон заблокирован во время запуска приложения]
D/Cocos2dxActivity: onPause()
D/AudioFocusManager: abandonAudioFocus succeed!
[Телефон разблокирован]
D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=true
D/Cocos2dxActivity: onResume()
D/AudioFocusManager: requestAudioFocus succeed
D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=false
W/ViewRootImpl[GDPR Dialog Title]: Dropping event due to no window focus: MotionEvent { action=ACTION_DOWN, ...