最近在調試一個關於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沒有配對使用好。爲了快速修復,所以前期還是通過捕捉前面的異常再進行相關處理來進行補救。