Android实现计时与倒计时的方法汇总
发布时间 - 2026-01-11 01:44:42 点击率:次

方法一
Timer与TimerTask(Java实现)
public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
timer.schedule(task, 1000, 1000); // timeTask
}
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen--;
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
});
}
};
}
方法二
TimerTask与Handler(不用Timer的改进型)
public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
timer.schedule(task, 1000, 1000); // timeTask
}
final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
}
};
TimerTask task = new TimerTask() {
@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}
方法三
Handler与Message(不用TimerTask)
public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
Message message = handler.obtainMessage(1); // Message
handler.sendMessageDelayed(message, 1000);
}
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
txtView.setText("" + recLen);
if(recLen > 0){
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // send message
}else{
txtView.setVisibility(View.GONE);
}
}
super.handleMessage(msg);
}
};
}
方法四
Handler与Thread(不占用UI线程)
public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
new Thread(new MyThread()).start(); // start thread
}
final Handler handler = new Handler(){ // handle
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
recLen++;
txtView.setText("" + recLen);
}
super.handleMessage(msg);
}
};
public class MyThread implements Runnable{ // thread
@Override
public void run(){
while(true){
try{
Thread.sleep(1000); // sleep 1000ms
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}catch (Exception e) {
}
方法五
Handler与Runnable(最简单型)
public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
handler.postDelayed(runnable, 1000);
}
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
recLen++;
txtView.setText("" + recLen);
handler.postDelayed(this, 1000);
}
};
}
计时与倒计时
方法1,方法2和方法3,都是倒计时
方法4,方法5,都是计时
计时和倒计时,都可使用上述方法实现(代码稍加改动)
UI线程比较
方法1,方法2和方法3,都是在UI线程实现的计时;
方法4和方法5,是另开Runnable线程实现计时
实现方式比较
方法1,采用的是Java实现,即Timer和TimerTask方式;
其它四种方法,都采用了Handler消息处理
推荐使用
如果对UI线程交互要求不很高,可以选择方法2和方法3
如果考虑到UI线程阻塞,严重影响到用户体验,推荐使用方法4,另起线程单独用于计时和其它的逻辑处理
方法5,综合了前几种方法的优点,是最简的
以上所述是小编给大家介绍的Android实现计时与倒计时的方法汇总值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 实现计时
# 倒计时
# Android账号注册实现点击获取验证码倒计时效果
# Android 实现闪屏页和右上角的倒计时跳转实例代码
# Android开发之获取短信验证码后按钮背景变化并且出现倒计时
# Android实现计时与倒计时的常用方法小结
# Android实现加载广告图片和倒计时的开屏布局
# android自定义倒计时控件示例
# android实现倒计时功能代码
# 都是
# 推荐使用
# 小编
# 的是
# 是在
# 在此
# 很高
# 给大家
# 采用了
# 考虑到
# 影响到
# 可以选择
# 四种
# 最简单
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 几种方法
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
如何在万网自助建站中设置域名及备案?
如何在景安服务器上快速搭建个人网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Linux网络带宽限制_tc配置实践解析【教程】
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
大连网站制作公司哪家好一点,大连买房网站哪个好?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何快速查询域名建站关键信息?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何快速启动建站代理加盟业务?
如何在建站宝盒中设置产品搜索功能?
Laravel怎么在Controller之外的地方验证数据
高端网站建设与定制开发一站式解决方案 中企动力
EditPlus中的正则表达式实战(5)
如何快速搭建高效服务器建站系统?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel如何实现API资源集合?(Resource Collection教程)
活动邀请函制作网站有哪些,活动邀请函文案?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何在建站之星绑定自定义域名?
Python结构化数据采集_字段抽取解析【教程】
Java垃圾回收器的方法和原理总结
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
黑客如何通过漏洞一步步攻陷网站服务器?
Android 常见的图片加载框架详细介绍
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
动图在线制作网站有哪些,滑动动图图集怎么做?
网站制作壁纸教程视频,电脑壁纸网站?
JavaScript如何操作视频_媒体API怎么控制播放
怎么用AI帮你设计一套个性化的手机App图标?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
canvas 画布在主流浏览器中的尺寸限制详细介绍
实例解析Array和String方法
如何快速打造个性化非模板自助建站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
手机软键盘弹出时影响布局的解决方法
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
JavaScript如何实现类型判断_typeof和instanceof有什么区别
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
如何挑选优质建站一级代理提升网站排名?
常州企业网站制作公司,全国继续教育网怎么登录?
如何在阿里云虚拟主机上快速搭建个人网站?
济南网站建设制作公司,室内设计网站一般都有哪些功能?

