android系统中的多线程(三):关于定时和周期性执行

本文介绍如何利用Java的Timer、TimerTask、Handler和Runnable配合实现周期性的UI更新逻辑,包括实例演示和代码解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Handler和 TimerTask ,在java.util.Timer线程执行

Timer负责设定周期
TimerTask负责具体执行任务,对于需要更新UI的部分,发送消息给Handler,新启动了线程
Handler
重写handleMessage方法处理消息 ,更新UI

举例:

Timer timer = new Timer();
Handler handler = new Handler(){
  public void handleMessage (Message msg)  {
    switch (msg.what) {
        case TestHandler.GUIUPDATEIDENTIFIER: mImageView.invalidate();
           break;
    }
    super.handleMessage(msg);
   }
};  
 
TimerTask task = new TimerTask(){
  public void run() {
Message message = new Message();
   message.what = TestHandler.GUIUPDATEIDENTIFIER;
   handler.sendMessage(message);
   }
};  
 
public void onCreate(Bundle savedInstanceState){  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.main);  
 timer.schedule(task, 10000);  
}

使用Runnable和Handler的postDelayed方法实现,在handler所在线程实现,即使runnable属于其它线程也是在handler所在线程执行

举例:

		private Handler handler = new Handler(); 
		private Runnable myRunnable= new Runnable() {
		 public void run() { 
		  if (run)  { 
		    handler.postDelayed(this, 1000); 
		  }
		   mImageView.invalidate();
		 } 
		}; 

		 @Override  
		 public void onCreate(Bundle savedInstanceState) {  
		        super.onCreate(savedInstanceState);  
		        setContentView(R.layout.main);  
		         handler.post(myRunnable);  
		}  
		      
		 @Override      
		protected void onDestroy() {       
		 handler.removeCallbacks(myRunnable);       
		 super.onDestroy();       
		} 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值