ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> Android源码解析——Toast

Android源码解析——Toast(5/5)

来源:网络整理     时间:2016-05-06     关键词:

本篇文章主要介绍了"Android源码解析——Toast",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下: 简介Toast是一种向用户快速提供少量信息的视图。当它显示时,它会浮在整个应用层的上面,并且不会获取到焦点。它的设计思想是能够向用户展示些信息,但又能尽量不显得...

privatevoidscheduleTimeoutLocked(ToastRecord r)
    {
        mHandler.removeCallbacksAndMessages(r);
        Message m = Message.obtain(mHandler, MESSAGE_TIMEOUT, r);
        long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
        mHandler.sendMessageDelayed(m, delay);
    }

也就是在delay时间之后发送一个MESSAGE_TIMEOUT的消息来通知Toast隐藏。delay的时间根据Toast设置的duration是否为Toast.LENGTH_LONG来决定是LONG_DELAY(3.5秒)还是SHORT_DELAY(2秒)。
NotificationManagerService的实现代码很长,为避免篇幅因贴上代码的()() 关系变得太长,这里只介绍了主要流程的代码,具体每个步骤的方法实现,可以自己翻阅该类代码,文件位于SDK的sources\android-23\com\android\server\notification1`。

总结

对于Toast代码的分析在此告一段落,从上面的分析中我们可以得到以下结论:

  • 默认的Toast布局的背景可以在theme中配置。
  • Toast的显示及隐藏是通过NotificationManagerService来管理的,它跨进程,使用AIDL来实现进程间通信。
  • 所有Toast都会加到NotificationManagerService的队列中,对于非系统程序,它会限制Toast的数量(当前我所读的代码中该值为50)以防止DOS攻击及内存泄露的问题。
  • Toast的显示及隐藏命令通过new出来的handler来发送。所以没有队列的线程是不能显示Toast的。
  • Toast的显示的时间只有两个,duration相当于一个标志位,用于标志显示的时间是长还是短,而不是具体的显示时间。
  • 当有Toast要显示时,其所在进程会被设为前台进程。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了Android源码解析——Toast,包括了方面的内容,希望对Android开发有兴趣的朋友有所帮助。

    本文网址链接:http://www.codes51.com/article/detail_925949_5.html

    相关图片

    相关文章