zoukankan      html  css  js  c++  java
  • Toast不消失问题

    在实现一个功能的时候,遇到了Toast一直不消失的问题,因此,对Toast进行了一些研究。

    先描述问题:有一个activity和一个thread,都有各自的handler。activity启动thread,双方通过handler进行交互。当在thread中运行到某种情况,会弹出toast进行信息提示,若此时退出activity,会出现Toast一直不消失的情况,直到用户手动清理内存才会消失。

    通过查找资料了解到,Toast在创建时有一个context参数,通常我们是将一个activity做为context参数传递进去的。若activity完全退出了,则Toast的工作环境异常,某些动作就不能实现了,例如hide()或者cancle()不能正常调用运行,表现出来就是提示信息不能自动消失。

    调用Toast的show(),是将一个要显示的消息入了队列,调用cancel()即可取消。另外,Toast信息提示框在显示一定时间后也会自动关闭,是因为在调用show()方法后,将消息加入了系统的Toast队列。系统会依次从队列中取出一个Toast,并显示它。在显示一段时间后,再关闭,然后再显示下一个Toast信息提示框。直到Toast队列中所有Toast都显示完为止。

    然而,我在thread的handler里面,在收到退出消息时,调用了Toast的cancel(),仍然不能解决问题。

    后来想到一点:收到activity发出的退出消息时,是否已经有所滞后了,此时会不会activity已经被销毁了? 
    基于这点考虑,我将消息的显示与cancel()都转移到activity中来实现,最终解决了问题。

    通常我们调用Toast是这样做的,

  • 相关阅读:
    导出Execl
    字符串与整型的转换及判断
    sql 删除重复记录
    日期函数
    C#中Hashtable和HashMap的区别很详细;
    c# Cookie汉字乱码的问题
    C#遍历整个文件夹及子目录的文件代码,.Net技术文章,Asp.net系列教程,Asp.n...
    自定义服务器控件开发之2:文件上传控件
    09所对应的汉字
    ms sql 分割字符串
  • 原文地址:https://www.cnblogs.com/xxwn/p/9365872.html
Copyright © 2011-2022 走看看