我扩展了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, ...
如果不显示对话框,则无法重现该错误。
如果该应用没有cocos,我将无法重现该错误。
应用启动后锁定手机不会重现该错误。
将显示对话框的代码移动到onStart()或onResume()不会改变任何内容。
我尝试注释掉Cocos2dxActivity的onResume()和onPause()的不同部分,即使Cocos没有重点,也强制执行恢复代码,但这也没有改变。
这是一个精简的logcat,其中仅包含与该问题相关的内容
[应用启动]
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, ...