项目突然发现有个偶现的bug,就是偶尔会回到前台时,触摸啥反应都没有,只能杀掉应用重启.因为实在是找不出问题,复现率又很低,就暂时没管.
稍微空闲时,看了下日志,发现触摸没反应时,会打印这样的:
W/ViewRootImpl:dropping event due to no window focus:
KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=158, metaState=0,
flags=0x8, repeatCount=0, eventTime=1057872, downTime=1057872, deviceId=4,
displayId=0, source=0x101 }........etc....
cancelling event due to no window ......etc .....
以我的水平,read the fucking source,进入到 ViewRootImpl,看了下也不知道怎么解决.
搜了下解答看到有说 建议复写回退键的 onKeyDown () 换成 onkeyUp()...
有说是Dialog相关属性 dissmiss问题
总之没有一个符合本项目条件的,无奈.虽然印象中,是项目用了系统的共享元素专场动画以后才开始出现这个问题的,但是始终不知道是哪里的原因.忙了又搁置.
如此几番.终于再今天在Stack Overflow 上看到了个 animationEnd 什么的,也没解释全,琢磨了下,的确,这个问题确实是自从主页跳转使用了系统转场动画大概这样的
Intent intent = new Intent(ShareAnimatorActivity.this,SecondShareAnimActivity.class);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(ShareAnimatorActivity.this,shareImg,getString(R.string.share_pic_str)).toBundle();
startActivity(intent,bundle);
用了共享元素转场动画之后,才开始偶现的.
那么问题来了,如果是这个原因,那一定能复现的,因为以前不知道时,只能碰运气.
然后试了下,打开下一个页面,然后再后退,后退执行动画,再共享元素没完全复位,也就是说动画没执行完的时候,给他home键回到桌面,或者锁屏.
再次打开应用/亮屏,OK!!!!! 问题复现了!!! 激动,这么久,原因终于找到了.那么下一步不用多说了. hhhhhhh
网友评论