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

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);就可以启动定时器。

时间: 2024-08-23 14:54:21

系统服务详解之时间服务2的相关文章

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

4.全局定时器:AlermManager 全局定时器是与应用程序独立的系统时间服务,并不依赖应用程序而存在. 该对象通过 AlarmManage alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 获得. 通过PendingIntent指定一个Activity,再通过setRepeating方法设置定时器 intent = new Intent(this, MyActivity.class); pendin

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

Android SDK中内置了多种时间服务,用于处理时间相关的操作. 1.计时器:Chronometer组件 这个组件可以以1秒为时间间隔进行计时. 示例如下: public class Main extends Activity implements OnClickListener, OnChronometerTickListener { private Chronometer chronometer; private TextView tvTime; @Override protected

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

2.Handler是处理定时操作的核心类.通过Handler可以提交和处理一个Runnable对象.该类通过3个方法来处理Runnable对象:                  立即执行:post :指定时间执行:postAtTime:指定的时间间隔:postDelayed 因为该类处理对象为Runnable,所以在调用这3个方法之前,需要实现Runnable接口的run方法. public class Main extends Activity implements OnClickListe

RHEL/CentOS 6.x 系统服务详解

PS:RHEL/CentOS 6.x的系统服务比5.x系列的要多了很多新面孔,估计很多童鞋不甚理解,网上这方面资料也很少.理解这个对运维人员是必要的,因为开启不必要的服务越多,系统就相对越不安全.不需开启的服务尽量关闭.本人结合自己的应用经验做一些讲解说明,有不同理解的童鞋欢迎交流. 1.下面列表是在RHEL/CentOS 6.x最小化桌面环境安装下显示出来的系统服务,其中红色字体标注的是用官方的minimal ISO最小化安装系统后的服务列表. 服务名称 功能  默认   建议  备注说明 N

linux系统服务详解

1.NetworaManager:在无线和有线网络之间快速切换.一般用于移动终端. 2.NetworkManagerDispatcher:在多种网络环境之间来回切换,与NetworkManager相同. 3.acpid:(没有预设端口)电源管理配置服务. 4.anacron:(没有预设端口)一个自动化运行任务.Red Hat Linux 随带四个自动化任务的工具:cron.anacron.at.和 batc.当你的Linux主机并不是全天候开机,这个anacron就可以帮你执行在"chontab

系统服务详解之电话服务、音频服务

接听电话时,会显示两个状态:来点状态和接听状态.下面示例演示了如何使用电话服务. public class Main extends Activity { public class MyPhoneCallListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { //通话状态 case Tele

CentOS启动和停止服务详解

  CentOS启动和停止服务详解            服务简介 Linux 系统服务是在Linux启 动时自动加载,并在Linux退出时自动停止的系统任务.在Linux 启动过程中,我们可以看得很多"starting - "提示信息,该信息表示正在启动系统服务;而在Linux 退出时,我们也能够看到相应的"Stopping - "信息,表示系统服务正在停止.Linux自身有许多系统任务,如"network" 服务用于支持网络连接等.CAMS

Android中Service(后台服务)详解

  这篇文章主要介绍了Android中Service(后台服务)详解,本文讲解了Service的概念.作用.生命周期.启动方式和代码实例等内容,需要的朋友可以参考下 1.概念: (1).Service可以说是一个在后台运行的Activity.它不是一个单独的进程,它只需要应用告诉它要在后台做什么就可以了. (2).它要是实现和用户的交互的话需要通过通知栏或者是通过发送广播,UI去接收显示. (3).它的应用十分广泛,尤其是在框架层,应用更多的是对系统服务的调用. 2.作用: (1).它用于处理一

HTTP协议详解

HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发 展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出. HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式. 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.PO