最近在调试一个关于windowmanger添加或移除view时产生诡异的bug,问题就是出现在windowmanger.addview(View view)这行代码。
具体情况:代码走到这行,突然没法往下走了,程序没有崩溃,logcat里也没能抓到error级别的日志。
无意中,发现了warning级别的日志。
java.lang.IllegalStateException:xxx has already been added to the window manager.
错误产生的原因是在使用windowmanager.addView(View view)方法时试图添加一个已以被添加的view,
而后又尝试在使用windowmanager.addView(View view)之前调用windowmanager.removeView(View view),可没想到是又引发了另一个异常
java.lang.IllegalArgumentException: View not attached to window manager
错误产生的原因使用removeView方法时尝试移除一个就没有被添加的view导致了上述的错误。
上面的错误的产生,必然是在使用windowManger添加view或移除view没有配对使用好。为了快速修复,所以前期还是通过捕捉前面的异常再进行相关处理来进行补救。