FloatViewFinal icon indicating copy to clipboard operation
FloatViewFinal copied to clipboard

刚打开悬浮窗,迅速返回桌面,程序会崩溃

Open panliming-tuya opened this issue 9 years ago • 3 comments

java.lang.IllegalArgumentException: View not attached to window manager at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:406) at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:295) at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:74) at cn.finalteam.floatviewfinal.widget.FloatView$1.handleMessage(FloatView.java:90)

panliming-tuya avatar Mar 21 '16 02:03 panliming-tuya

已解决, 调用destory之前应该先调用一次hide

panliming-tuya avatar Mar 21 '16 02:03 panliming-tuya

目前发现两个Bug。 1.第一次打开悬浮窗,在加载动画执行完毕之前,按返回键返回桌面,程序奔溃 2.第一次打开悬浮窗,在加载动画执行完毕之前,如果屏幕旋转,程序奔溃 这两次奔溃的错误跟1楼所述一样,不过楼主在destroy之前已经调用了hide方法,不知道1楼所说的是哪里调用一次hide方法

PPJLiuJie avatar Dec 18 '16 08:12 PPJLiuJie

问题解决了。 开始我一直不理解为什么要在FloatView的detroy方法中调用: try { mTimerHandler.removeMessages(1); } catch (Exception e){} 现在我明白了,是为了将对应的消息从队列中取消掉,但是FloatView中消息对应的what有两个,一个是HANDLER_TYPE_HIDE_LOGO = 100,一个是HANDLER_TYPE_CANCEL_ANIM = 101,所以将上述代码改为: try { // mTimerHandler.removeMessages(1); mTimerHandler.removeMessages(HANDLER_TYPE_CANCEL_ANIM); mTimerHandler.removeMessages(HANDLER_TYPE_HIDE_LOGO); } catch (Exception e){}

即可解决问题

PPJLiuJie avatar Dec 18 '16 08:12 PPJLiuJie