美文网首页
Dialog关不掉

Dialog关不掉

作者: Shawn_GBWang | 来源:发表于2018-06-29 11:15 被阅读0次

问题描述:我在Activity中show了一个dialog关不掉了。

场景描述:我在A活动里,onCreate初始化了一个DIalog和一个CountDownTimer类型的计数器,并在计时器的构造中,传入当前的handler对象。计时器被我写成单例的。

然后当我点击A按钮的时候,启动Dialog和计时器,计时器倒计时5秒,发出消息,在handleMessage中,收到发送的消息,然后关闭Dialog。

第一次进入活动,点击A按钮,过5秒,收到消息然后关闭dialog,这个操作是正常的。但是当我退出当前活动

第二次进入活动,点击A按钮,过5秒,收到消息后,就关闭不掉这个dialog了。整个活动都是重新初始化的。

分析:经过一番测试之后,我发现dialog中的mShowing这个属性,在我第二次进入活动,并且dialog.show()调用之后,被修改为true。过五秒后,在handleMessage中,调用dialog.hide(),这时dialog的mShowing这个属性确是false,然后就关不掉dialog了。

如何解决:最后我是如何解决的呢,我把CountDownTimer这个计时器创建的单例给取消了,每次都重新创建一个新的对象并接收当前活动的handler对象。

后续:

dialog对象

情况1:CountDownTimer是单例模式,并持有当前活动的handler对象

messageDialog1  hashcode:29560034是我第一次进入活动创建的dialog对象,然后我退出当前活动。

第二次进入活动,创建了一个新的dialog对象messageDialog1 hashcode:96367861

但是,当五秒过后,在handleMessage中,收到消息关闭dialog时,这个dialog对象反而是第一次创建的dialog对象

看hashcode

所以关闭不了dialog,因为根本就不是同一个对象。原因会继续找。

TIPS:这里做一个小结,建议不要在单例类中,持有hanlder对象,否则就会发生这种操蛋的问题。

相关文章

  • Dialog关不掉

    问题描述:我在Activity中show了一个dialog关不掉了。 场景描述:我在A活动里,onCreate初始...

  • 关不掉

    关掉太阳 关掉月亮 但关不掉飞逝的时光 关掉黑夜 关掉白天 但关不掉人生的年轮 关掉灯光 关掉眼睛 但关不掉对你的...

  • Android中修改Dialog下的窗口变暗

    一、前言: 在继承AppCompatDialogFragment()方法中的dialog弹窗一直有灰色背景,去不掉...

  • 为什么这么多广告

    为什么突然这么多广告 真的好烦 关都关不掉

  • 关不掉的窗户

    芸妹不止一次的提醒我晚上关窗户,我现在终于记得每天检查一遍。但成都的鬼天气就是这样,昨晚明明很热,我就想算了,晚上...

  • 关不掉的闹钟

  • 关不掉的闹钟

    码完这篇文章,已经是夜里1点钟了。 我用双手揉了揉眼,周围只有寂静,我甚至能够听到青蛙半夜的呱噪声,很可惜,于我而...

  • 关不掉的月光

    城里的月光 偷偷攀上高矗的楼顶 依偎在我的肩膀上 清飔灌满了我的衣襟 旧绪堆叠满了心房 夜的深在街道上悠荡 熄灭了...

  • 关不掉的手机

    一夜未眠的夜班,下班已经是十二点多了,匆匆吃完饭便睡觉了,可是刚刚睡着没多久电话铃声响了,还好,理智尚在...

  • 关不掉的电视

    1. 我感觉自己接到了一个很重要的任务,看着眼前的小姑娘一幅兴奋的样子,我对她说, “晚点,不要急,再等一等,我陪...

网友评论

      本文标题:Dialog关不掉

      本文链接:https://www.haomeiwen.com/subject/lcaoyftx.html