前言:在上一篇文章中《技术记录---Toast频繁弹出问题及其流程分析》我们对Toast的先cancel后show的不能弹出Toast的原因就行了分析;可不知道你有没有发现,我们的代码入下:
mToast.cancel();//会使得 mTN.mView和mTN.mNextView 都为null
mToast.setText("new message");
mToast.show();// 会把mTN.mNextView重新赋值(不为null)
既然我们是先赋值 mTN.mView =null 和 mTN.mNextView = null;然后在show的时候,我们又把 mTN.mNextView =view;这样 if(mView != mNextView)判断时候,不应该满足条件么?!这样toast应该显示才对呀?可事实上并非如此。
我们调用 toast.cancel()的时候调用的是mTN.hide()方法,mTN.hide()方法如下:
/**