接着上一节,这次我查看了Android的时间服务,觉得帮助很大,解决了我很多疑问,下面我就自己总结了一下,加深了自己的印象,好记性不如烂笔头,还真讲得很不错,收下吧?看下图如何利用线程更新UI组件

重点:

1】 通过两个类Handler 和Timer 类,结合线程里处理UI组件的模式,把很多知识系统的梳理。

2】 预约时间Handler: 主要是如下3个方法来执行Runnable 对象

handler.post(Runnable r);
        handler.postAtTime(Runnable r,long uptimeMillis);
        handler.postDelayed(Runnable r,long delayMillis);

具体的可以自己查看API...

3】 虽然Timer和Handler 的执行任务代码都是放在run方法里,但是Timer是在线程中执行run方法。而Handler是将执行的动作添加到Android系统的消息队列里,因此:在Timer的run方法里不能够直接访问UI组件,因为线程内不能跨线程。要是实现的话就要利用Handler接受Message:

关键代码如下:

//更新UI的方法

private void setUI() {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

@Override
            public void run() {
                // TODO Auto-generated method stub
                /**
                 * 这里我们不能直接调用UI界面的组件来更新,而应该使用Handler 来接收消息更新,这里只要发出消息就可以了
                 */
                Message message = new Message();
                message.what = 1;// 可以发送多个消息,然后Handler接受不同的消息响应不同的时间
                handler.sendMessage(message);
            }
        }, 0, 500);// 间隔0.5秒,没有延迟立即执行任务
    }

/** 利用线程更新GUI组件的方法 */

private Handler handler = new Handler() {
        // handler接受消息,这里来处理UI组件的更新
        public void handleMessage(Message msg) {
            // UI组件处理应该在这里,而不应该在任务TimerTask 的run里面
            switch (msg.what) {
            case 1:
                // 下面是进程条的更新
                int currentProgress = bar.getProgress() + 1;
                if (currentProgress > bar.getMax())
                    currentProgress = 0;
                bar.setProgress(currentProgress);
                break;

default:
                break;
            }
        };
    };

Android_时间服务的更多相关文章

  1. Android_设备隐私获取,忽略6.0权限管理

    1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: ...

  2. Windows Server 2016-Windows 时间服务概览

    同步 Windows 时间服务 (W32Time) 的日期和时间的所有运行 Active Directory 域服务 (AD DS) 的计算机. 时间同步至关重要的许多 Windows 服务和的业务线 ...

  3. NTP时间服务

    时间服务 NTP:Network Time Protocol 作用:用来给其他主机提供时间同步服务 NTP的配置文件 /etc/ntp.conf NTP相关的命令 date:显示/修改系统时间 hwc ...

  4. 手动配置 Windows 时间服务

    手动配置 Windows 时间服务 要将内部时间服务器配置为与外部时间源同步,请按照下列步骤操作: 将服务器类型更改为 NTP. 为此,请按照下列步骤操作: 选择 “开始” . “运行”,键入 reg ...

  5. Android_开源框架_AndroidUniversalImageLoader网络图片加载

    1.功能概要 Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示. (1).使用多线程加载图片(2) ...

  6. 网络时间服务和chrony

    ⽹络时间服务和chrony 实验练习: 准备实验环境: 可用的centos6.7系统. centos6 :192.168.37.6 centos7 :192.168.37.7 关闭selinux 关闭 ...

  7. Centos 7 最小化时间服务部署配置

    基本原理 Centos 7 我所了解有两种时间服务,NTPD与chronyd:两者对Centos 7 的支持都很好,有对chrony非常夸赞的,不过我这里只讲ntpd:有对chrony有想法的可以自行 ...

  8. Android_安卓为按钮控件绑定事件的五种方式

    一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...

  9. ArcGIS for Android_离在线一体化核心技术基本流程

    核心思想: a.数据首先存储于ArcSDE中,要素添加GlobleID,图层数据启用数据归档或开启版本化.b.然后将ArcSDE数据库托管于ArcGIS for Server作为数据存储.c.在Arc ...

随机推荐

  1. 如何避免regionServer宕机

    为什么regionserver 和Zookeeper的session expired? 可能的原因有 1. 网络不好. 2. Java full GC, 这会block所有的线程.如果时间比较长,也会 ...

  2. 【转】来自《轻松scrum之旅》的敏捷开发总结

    敏捷开发的核心价值观是,软件开发最重要的是给用户提供有价值的.可以工作的软件.如何保证提供有价值的软件,是通过反馈机制来完成的.这一点,我们体会很深.自从采用敏捷开发以后,我们比以前更有意识地希望得到 ...

  3. [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38612721 本文作者:sushengmiyan ------------------ ...

  4. 较具体的介绍JNI

    JNI事实上是Java Native Interface的简称,也就是java本地接口.它提供了若干的API实现了和Java和其它语言的通信(主要是C&C++).或许不少人认为Java已经足够 ...

  5. 如何用JAVA生成注册序列号

    原文:http://blog.csdn.net/eagleking012/article/details/7099900 平常我们都接触过软件注册,输入序列号.激活码.注册码.授权码:对于这些字符码到 ...

  6. 递归循环JSON

    using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary ...

  7. C 二叉树 1

    二叉链表: #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include & ...

  8. MySQL如何选择float, double, decimal

    http://yongxiong.leanote.com/post/mysql_float_double_decimal

  9. 使用日志服务LogHub替换Kafka

    https://yq.aliyun.com/articles/35979#index_section

  10. 如何在Linux桌面环境下自动启动程序?

    大多数Linux桌面环境有各自的图形用户界面(GUI),让用户可以配置针对特定用户的自动启动程序或服务.本文将介绍如何在各种Linux桌面环境下,自动启动某个程序的方法. AD:WOT2014:用户标 ...