系统服务详解之时间服务2

简介: 3、定时器:Timer Timer和Chronometer类似,但功能更加强大。Timer类通过schedule方法设置执行方式和时间,schedule方法的第一个参数为TimerTask,TimerTask类实现了Runnable接口,因此Timer实际上是在线程中执行run方法。

3、定时器:Timer

Timer和Chronometer类似,但功能更加强大。Timer类通过schedule方法设置执行方式和时间,schedule方法的第一个参数为TimerTask,TimerTask类实现了Runnable接口,因此Timer实际上是在线程中执行run方法。

虽然Timer和Handler的处理代码都放在run方法中,但Timer是在线程中执行run方法,Handler是将执行的动作添加到Android系统的消息队列。因此使用Timer执行run方法时,在run方法中不能直接更新UI,必须使用Handler。

public class Main extends Activity
{
	
	private ProgressBar progressBar;

	private Handler handler = new Handler()
	{

		public void handleMessage(Message msg)
		{
			switch (msg.what)
			{
				case 1:
					int currentProgress = progressBar.getProgress() + 2;
					if (currentProgress > progressBar.getMax())
						currentProgress = 0;
					progressBar.setProgress(currentProgress);
					break;
			}
			super.handleMessage(msg);
		}

	};
	private TimerTask timerTask = new TimerTask()
	{

		public void run()
		{
			Message message = new Message();
			message.what = 1;
			handler.sendMessage(message);
		}

	};

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		progressBar = (ProgressBar) findViewById(R.id.progressbar);
		Timer timer = new Timer();
		timer.schedule(timerTask, 0, 500);



	}
}
在run方法中并没有直接更新进度条组件,而是使用Handler类的sendMessage方法发送一条消息,并在handlemessage方法中更新进度条。实际上,这个handler对象已经加到Android消息队列,等待调用。使用Timer timer = new Timer();
          timer.schedule(timerTask, 0, 500);就可以启动定时器。

目录
相关文章
|
4月前
|
监控 Ubuntu Linux
Linux时间改错了,我想让他恢复正确时间
Linux时间改错了,我想让他恢复正确时间
|
5月前
|
存储 监控 Unix
|
存储 监控 Kubernetes
如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用
如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用
461 0
|
运维 监控 安全
精简系统服务和开机进程| 学习笔记
快速学习精简系统服务和开机进程。
|
运维 监控 安全
精简系统服务和开机进程
一、线上服务器建议开启的服务 二、可删除的系统用户和组 三、下期公开课预告 四、广而告之
|
移动开发 监控 Unix
AIX上如何启动和停止系统服务
AIX上如何启动和停止系统服务 -----------------------------在 AIX 上,服务也可以称为子系统(Subsystem),它是受控于系统资源控制器(System Resource Controller,SRC)的。
2374 0