开发需求:在网络断开的时候自动弹出dialog通知用户,等待自动重连后调用dismiss使dialog消失。
遇到问题:网络断开时,调用dismiss无效。
代码截图:
由于网络断开或者连接都会接收广播从而调用onReceive,从而初始化一个dialog,如果网络断开就会show(),但是当网络再次连接时仍然会初始化一个dialog,因此调用dismiss()时,dismiss的对象已经不是网络断开时调用show()所显示的dialog了,因此已经显示的dialog不会消失
改善之后的代码:
1. 将dialog定义为全局变量,从而保证网络断开或者重连时的dialog对象一致。
2. 将dialog创建代码块放到断开的时候创建从而提升效率。
3. 重连dismiss后使dialog=null从而释放了内存,节省了资源。