接着上一节,这次我查看了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. maven快速入门

    一.maven maven可以说是管理项目的优秀工具,管理jar包 二.mave安装 1.先安装jdk(本文不详细讲) 2.安装maven ①.maven下载   http://maven.apach ...

  2. 基于EF创建数据库迁移

    通过创建的实体类和DbContext类利用EF的Code First数据库迁移创建数据库. 下面看代码. 一.先创建实体类 我先添加一个BaseEntity,里面就一个属性 [Key] public ...

  3. UITextView光标在中间的问题

    if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) { self.automatica ...

  4. [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句

    不管是在Java或者Android中运行命令行语句殊途同归都是创建一个子进程运行调用可运行文件运行命令.类似于Windows中的CMD一样. 此时你有两种方式运行:ProcessBuilder与Run ...

  5. git codes

    https://github.com/chibi-guts/DressUpProject https://github.com/TuttiFruttiFT/TFAndroid https://gith ...

  6. 文件和目录之umask函数

    本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. umask函数为进程设置文件模式创建屏蔽字,并 ...

  7. debian非正常关机进不了图形界面的解决方法

    昨天调试一个程序的时候,把界面设置成了POPUP方式,结果触发断点的时候,界面不能最小化,程序就死到那了,动不了,没办法只好按电源了,结果启动的时候提示 An automatic file syste ...

  8. JavaScript网站设计实践(一)网站结构以及页面效果设计

    这是JavaScript DOM编程艺术里的构建JavaScript网站设计的例子,这本书给我学习JavaScript带来许多启发,在这个乐队宣传网站中,把前面学到的知识点整合在这个项目了.在这里记录 ...

  9. eclipse创建项目时出现appcompat_v7包及解决办法

    Android开发学习总结(三)--appcompat_v7项目说明 一.appcompat_v7项目说明 今天来说一下appcompat_v7项目的问题,使用eclipse创建Android项目时, ...

  10. 关于Eclipse中开发插件(二)

    原plugin.xml文件各个设置项的说明: 附上生成的文件代码: <?xml version="1.0" encoding="UTF-8"?> & ...