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();
		}
	}


整体demo稍后上传。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值