关键技术:

本程序实现了在屏幕中实时显示系统的时间,其中用到了Handler、Timer、TimerTask、Message等关键技术。

思路分析:

我们都知道,在Android中程序不能在主线程中(UI线程)中调用或进行费时的操作。所以我们就应该去为主线程另起一条线程,用来进行费时的操作。就好像我们开了一间快餐店,在快餐店里可以把前台看成是一个UI主线程,他负责与客户进行交互。另外还有一些比如说是外送员,他是负责外送快餐的,也就是说他是负责一部分费时操作的。

这样一来,当客户对前台说要一份外送的快餐时,前台就可以把这项费时的操作交给外送员,此后前台可以暂时不用去管外送是怎么去送这份快餐。这就好比是用户与UI线程交互时,用户执行了一项费时操作,此时,UI线程会把这项费时操作的任务交给另一个线程,此后,UI线程也就不用去管这个线程是怎么去执行任务的了。

那具体的实现步骤又如何呢?可以借助本程序了解一部分主线程和费时线程还有Handler传递消息的机制。

要实现用Handler来传递信息,那个我们就必须要有一个Message类的实例。该实例有3个实例变量:

what:用户定义的int型消息代码,用来描述消息(可以类比控件的id);

obj:随消息发送的用户指定对象(一看它的名字就可以知道它是一个Object的类型,也就是说你想要传递什么消息,就可以传递什么消息);

target:处理消息的Handler。

代码展示:

另外,想要实时进行显示时间,那就必须要有一个计时器Timer对象。

Timer timer = new Timer(); // 创建一个计时器,用来定时更新数据/*** ........*/timer.schedule(timerTask, 0, 1000);

这里我们是用1秒为计时周期。

在计时器对象中,它执行了一个任务TimerTask对象,此时我们得到一条线程,用于发送message的内容。

TimerTask timerTask = new TimerTask() {@Overridepublic void run() {Message message = new Message();message.what = MESSAGE_WHAT_UPDATE_VIEW;message.obj = view;handler.sendMessage(message);}};

以上是线程发送出一条信息,我们可以用Handler来接收信息,再根据接收到的消息内容来执行费时操作。如下:

Handler handler = new Handler() {public void handleMessage(android.os.Message message) {View view = (View) message.obj;updateView(view);}};

就像是快餐店里,前台必须得到顾客想要吃什么才能告诉外送员,他需要去外送什么,是一个道理。这里的updateView(view)是用得到的view来重新生成Fragment或是Activity中的内容。

点击右侧获得Demo源码:利用Handler实时更新时间

利用Handler通信来实时显示系统时间相关推荐

  1. 【响应式Web前端设计】在html页面实时显示系统时间

    在html页面实时显示系统时间 桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可 <html> <head><meta http-equ ...

  2. 在html页面实时显示系统时间

    在html页面实时显示系统时间 桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可 <html> <head><meta http-equ ...

  3. html+显示在线时间,在html页面实时显示系统时间

    原创散场前的温柔 最后发布于2018-11-05 13:24:58 阅读数 16005  收藏 展开 在html页面实时显示系统时间 桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存, ...

  4. vc 实时显示系统时间

    1.基本函数: CTime time;  time=CTime::GetCurrentTime();//得到当前时间 2.在窗口创建的时候添加定时器 在classview中右击主界面类,添加windo ...

  5. wpf 实时显示系统时间_微软为Windows 10 on ARM引入WPF支持

    来源:快科技 对于微软来说,苹果推出自研桌面处理器后,就让原本Wintel阵营开始变得有些松动,不过微软已经开始在补足他们在移动端上的不足了. 现在微软方面宣布,将会在2021年为Windows 10 ...

  6. 【MFC】显示系统时间的状态栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 状态栏主要用于显示程序 ...

  7. 实时显示当前时间,每秒更新

    实时显示当前时间,每秒更新 我们可以利用定时器来完成这个功能 HTML <div id="app">{{date}} </div> JS <scrip ...

  8. php显示时间秒针走,Android_TextView显示系统时间(时钟功能带秒针变化,我们开启一个线程,线程每隔 - phpStudy...

    TextView显示系统时间(时钟功能带秒针变化 我们开启一个线程,线程每隔一秒发送一次消息,我们在消息中更新TextView上显示的时间就ok了. 首先我们在布局文件中放一个TextView用来显示 ...

  9. wincc显示系统时间_在WINCC画面组态中,如何显示系统时间?-工业支持中心-西门子中国...

    在wincc 的智能对象中 使用控件 选择DaclockCtrl 即可 调用的控件名称为WINCC Digital/Analog clock ctrol 回答者: KCN - 顶级工程师&nb ...

最新文章

  1. 自控力极差的人如何自救?两个方法战胜拖延!
  2. Spring Boot 项目设置网站图标
  3. jpa hibernate mysql_008Spring JPA Hibernate MySQL
  4. 这10句话,迷茫时读一读。
  5. 简单安装和yum安装的区别
  6. 清华尹成python爬虫百度云_爬虫:利用python完成百度贴吧数据采集
  7. python类的定义与使用_Python15类的定义和使用
  8. 蓝桥杯2015年第六届C/C++省赛C组第九题-打印大X
  9. android开发学习笔记系列(1)-android起航
  10. yii2基础之分页的基本使用及其配置详解
  11. linux命令学习之---- file
  12. 关闭或更改Windows自带输入法繁体简体切换(Ctrl+Shift+F)的快捷键
  13. 洛谷 UVA1395 苗条的生成树 Slim Span
  14. linux全盘扫描,3个有用的基于GUI和终端的Linux磁盘扫描工具
  15. 编译:一个 C 程序的艺术之旅
  16. python中的怎么打出来_如何在Python中打印上标?
  17. html5 2019新年祝福页面,2019新年创意祝福语 绝对让你的心意顺利送达
  18. HTML中的表格和表单
  19. java雷霆战机小游戏(git 素材+代码)
  20. 计算机可以辅助英语写作吗,计算机辅助大学英语写作

热门文章

  1. MySQL—表中添加数据
  2. [专栏目录]-optee/TEE/TA笔记-目录
  3. optee:kernel space调用user space进程时候的硬件行为
  4. (6)段描述符D/B位
  5. [watevrCTF 2019]Repyc [NPUCTF2020]BasicASM
  6. 2020-11-30(为什么字符串可以赋值给字符指针变量)
  7. 【网络安全】一次实战中对tp5网站getshell方式的测试
  8. 【Laravel】There is no existing directory at “…/storage/logs” and its not buildable: Permission denied
  9. Python小技巧——快速给大量文件命名
  10. Python爬虫CSS Selector的使用