cocos2d заставляет приложение отбрасывать все события касания и регулировки громкости, если телефон заблокирован во время запуска приложения - PullRequest
0 голосов
/ 27 июня 2018

Я расширяю 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, ...
...