首页 > 代码库 > Android 后台线程,timertask实现定期更新时间
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, 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(); } }
Android 后台线程,timertask实现定期更新时间
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。