接着上一节,这次我查看了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. 简单详细的OD破解教程

    2007-08-04 15:46作者:CCDebuger注:昨天在网上见到了这篇文章,但缺少插图,从另外一篇文章中也看到了类似的的教程文章,里面的插图质量实在不敢恭维.在一个论坛中正好下载了文章中所介 ...

  2. Samba Linux和Windows互访

    之前一直用的sshfs manager,但是会出现造成电脑黑屏的情况.网上也没找到其它类似的软件. 后面打算用Samba 直接搜到一篇很强大的文章. 1.  下载及安装Samba 推荐用yum来安装, ...

  3. POJ 3080 Blue Jeans (KMP)

    求出公共子序列  要求最长  字典序最小 枚举第一串的所有子串   然后对每一个串做KMP.找到目标子串 学会了   strncpy函数的使用   我已可入灵魂 #include <iostre ...

  4. win7(64bit)python相关环境模块搭建

    包括Python,eclipse,jdk,pydev,pip,setuptools,beautifulsoup,pyyaml,nltk,mysqldb的下载安装配置. **************** ...

  5. java_泛型(构造器)部分实例

    package ming; import java.util.ArrayList; import java.util.Collection; import java.util.List; class ...

  6. Mailing API

    Mailing API Configuration Basic Usage Embedding Inline Attachments Mail & Local Development Work ...

  7. 手工配置tomcat 解决一闪而过~

    双击tomcat 目录下的bin目录下的startup.bat 如果看到Server startup in **** ms 显示在屏幕上证明你的配置都成功了 如果一闪而过,说明出错了.请在dos进入上 ...

  8. Fixflow引擎解析(二)(模型) - BPMN2.0读写

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  9. 【转】Android LruCache源码介绍

    本文来源:转载自: http://blog.csdn.net/linghu_java/article/details/8574102 package android.util; import java ...

  10. Android NDK STL

    相信Android开发者都喜欢用C++编写一些高效的应用,有关Android NDK的C++开发相关知识总结如下:       从Android NDK r5开始支持了STL Port,在这个版本开始 ...