博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 后台线程,timertask实现定期更新时间
阅读量:7256 次
发布时间:2019-06-29

本文共 2324 字,大约阅读时间需要 7 分钟。

简述:这是一类定时功能的原型,用来在后台线程中运行一些定时的服务,比如定时修改时间

知识点:

1. Android多线程的消息通信(handler)

2. Java中时间的获取,以及String的格式化(SimpleDateFormat)

3. Android PostDelay 的定期的实现

4. timertask实现定期更新

在这里我们就对于handler的方法,开一个新的Thread每隔3秒, 用来定时修改一个TextView的时间。对于timertask,道理也是一样的,调用schedule方法,每隔三秒更新一次。

1.使用handler的方法:

protected void updateClock2Time(boolean isChecked)    {        if (isChecked) {            updateCurrentTime = new Thread() {                @Override                public void run()                {                    SimpleDateFormat formatter = new SimpleDateFormat(                            "HH:mm:ss");                    Date curDate = new Date(System.currentTimeMillis());                    String currentTime = formatter.format(curDate);                    message = handler.obtainMessage(UPDATE_MY_TV, currentTime);                    handler.sendMessage(message);                    // use Handler to control the time                    handler.postDelayed(this, 3000);                }            };            updateCurrentTime.start();        } else {            handler.removeCallbacks(updateCurrentTime);        }    }
@SuppressLint("HandlerLeak")    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg)        {            switch (msg.what) {            case UPDATE_MY_TV:                String currentTime = (String) msg.obj;                clock2.setText("Current Time: " + currentTime);                break;            }        }    };

2.使用timertask的方法:

class MyTimerTask extends TimerTask    {        @Override        public void run()        {            SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");            Date date = new Date();            cTime = format.format(date);            messageHandler.sendMessage(messageHandler.obtainMessage());        }    };
private Handler messageHandler = new Handler() {        @Override        public void handleMessage(Message msg)        {            clock1.setText("Current Time: " + cTime);            super.handleMessage(msg);        }    };
protected void updateClock1Time(boolean isChecked)    {        if (isChecked) {            timer = new Timer();            MyTimerTask task = new MyTimerTask();            timer.schedule(task, 3000, 3000);        } else {            timer.cancel();        }    }

 

转载地址:http://vykdm.baihongyu.com/

你可能感兴趣的文章
下载Crypto,CyCrypto,PyCryptodome 报错问题
查看>>
shell的奇淫巧技--自动化脚本(sed命令)
查看>>
批量更改文件名
查看>>
Hadoop1.x代码求海量数据最大值
查看>>
activemq 搭建--集群
查看>>
【洛谷4719】 动态dp(树链剖分,dp,矩阵乘法)
查看>>
运维与自动化系列③自动化部署基础与shell脚本实现
查看>>
利用window.performance.timing进行性能分析
查看>>
Java面向对象之继承
查看>>
状态模式
查看>>
ScheduledExecutorService 定时器用法
查看>>
Xshell 配置上传下载命令 rz sz 以及配置复制和粘贴
查看>>
<转载> pycharm快捷键及一些常用设置
查看>>
jmeter全链路压测
查看>>
显示逻辑卷信息
查看>>
Algs4-1.4.21无重复值之中的二分查找
查看>>
学生选课系统数据存储用shelve
查看>>
上传文件时文件类型限制 <input id="File1" type="file" accept=""/>
查看>>
按“开始”-“运行”,或按WIN+R,在[运行]窗口中输入
查看>>
java 子类对象实例化的过程
查看>>