Android 后台线程,timertask实现定期更新时间
简述:这是一类定时功能的原型,用来在后台线程中运行一些定时的服务,比如定时修改时间
知识点:
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, );
}
};
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, , );
} else {
timer.cancel();
}
}
Android 后台线程,timertask实现定期更新时间的更多相关文章
- c#后台线程更新界面
参考文章<C# 线程更新UI界面> 主窗口 public frmMain() { InitializeComponent(); } /// <summary> /// 主窗口加 ...
- 【转】Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask
方法一:(java习惯,在android不推荐使用) 刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread( new Runnable() { ...
- 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)
转自:https://blog.csdn.net/eson_15/article/details/51387378 上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重 ...
- Android的UI设计与后台线程交互
本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行.本文还将阐述一些用户界面(UI)中与线程交互的API.UI用户界面 ...
- Android中UI线程与后台线程交互设计的5种方法
我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一 些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必 ...
- 【Android Developers Training】 84. 将定期更新的影响最小化
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...
- Android中后台线程如何与UI线程交互
我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须 ...
- Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
随机推荐
- python3和pip3安装和问题解决
python3安装前,最好先安装下依赖包: yum install -y openssl-devel yum install -y openssl yum install -y zlib-devel ...
- ★ phpStudy安装SSL证书实现https链接
[准备] (1)phpstudy下载:http://phpstudy.php.cn/ (2)phpstudy集成环境下正常运行的网站 (3)避免意外请先备份(复制)好httpd.conf配置文件 ...
- 剑指offer三十六之两个链表的第一个公共结点
一.题目 输入两个链表,找出它们的第一个公共结点. 二.思路 如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的.也就是说两个链表从尾部往前到某个点,节点都是一样的.我们可以用两个栈分别 ...
- js的事件学习笔记
目录 0.参考 1.事件流 冒泡传播 事件捕获 2.事件绑定--onclick接口 onclick类的接口,只能注册一个同类事件 onclick类的接口,使用button.onclick = null ...
- [webrtc] 强制使用tcp传输
以前笔记,整理 webrtc默认使用UDP传输,但是也可以通过TCP传输. 使用tcp传输,需要服务器中转,turnserver,licode,janus之类的服务器. 1. 如果使用turnserv ...
- 简述C和C++的学习历程
总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复. 一家之言,欢迎拍砖哈. 1.可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望 ...
- alloca() 是什么?为什么不提倡使用它?
在调用 alloca() 的函数返回的时候, 它分配的内存会自动释放.也就是说, 用 alloca 分配的内存在某种程度上局部于函数的 ``堆栈帧" 或上下文中. alloca() 不具可 ...
- [笔记] Python字符串
1.字符串是以单引号'或双引号"括起来的任意文本 比如'Mifen',"Amd794",'-956-$*'等等.注意:不能单双引号组合,涉及字符串中存在单双引号出现,应用 ...
- redis实战笔记(10)-第10章 扩展Redis
本章主要内容 扩展读性能 扩展写性能以及内存容量 扩展复杂的查询 随着Redis的使用越来越多, 只使用一台Redis服务器没办法存储所有数据或者没办法处理所有读写请求的问题迟早都会出现, 这 ...
- [uva] 1671 History of Languages
题目描述 输入两个DFA,判断是否等价. https://uva.onlinejudge.org/external/16/1671.pdf 输入 第一行T 可以接受的字母表 第二行N 状态数 接下去N ...