定时刷新页面的方法

本文介绍了在安卓应用中使用Timer与Handler类及子线程与Handler类实现定时任务的方法,通过具体实例展示了如何更新UI并控制定时任务。

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

1.利用Timer和Handler类

2.利用子线程和Handler类

方法一解析:

利用Timer类具有每隔特定时间处理程序代码的功能

在MainActivity首先创建Handler对象handler,

timer.schedule(TimerTask对象,延迟时间,间隔时间) timer每隔一段时间就会执行TimerTask对象的run()方法

但TimerTask对象不能更新UI否则会产生错误,所以我们在Timer的run()方法中调用handler.sendMessage(Message msg)发送消息给主类中的handler,

让handler的handleMessage(Message msg)来处理

方法二解析:

在MainActivity首先创建Handler对象handler,

在MainActivity中定义内部的Thread类,void run()内部是处理UI的代码,最后一行使用handler.postDelayed(该线程对象,延迟时间);

最后按钮的监听处理一定要使用handler.post(线程名)来启动进程

  1 package com.example.mytest;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashMap;
  5 import java.util.List;
  6 import java.util.Map;
  7 import java.util.Timer;
  8 import java.util.TimerTask;
  9 
 10 import android.os.Bundle;  
 11 import android.os.Handler;
 12 import android.os.Message;
 13 import android.os.SystemClock;
 14 import android.text.Html;
 15 import android.text.SpannableString;
 16 import android.text.Spanned;
 17 import android.text.method.LinkMovementMethod;
 18 import android.text.style.ForegroundColorSpan;
 19 import android.text.style.URLSpan;
 20 import android.util.Log;
 21 import android.view.KeyEvent;
 22 import android.view.MotionEvent;  
 23 import android.view.View;  
 24 import android.view.View.OnClickListener;
 25 import android.view.View.OnKeyListener;
 26 import android.view.View.OnTouchListener;  
 27 import android.widget.ArrayAdapter;
 28 import android.widget.Button;
 29 import android.widget.Chronometer;
 30 import android.widget.Chronometer.OnChronometerTickListener;
 31 import android.widget.EditText;
 32 import android.widget.FrameLayout;  
 33 import android.widget.ListView;
 34 import android.widget.SimpleAdapter;
 35 import android.widget.TextView;
 36 import android.widget.Toast;
 37 import android.app.Activity;  
 38 import android.graphics.Color;
 39 import android.graphics.drawable.Drawable;
 40   
 41  
 42 
 43 public class MainActivity extends Activity { 
 44     private Button button1,button2,button3,button4;
 45     private TextView textView;
 46     private int sum=0,fen,miao;
 47     private boolean flag=false;
 48    protected void onCreate(Bundle savedInstanceState) {  
 49         
 50         super.onCreate(savedInstanceState);
 51         setContentView(R.layout.activity_main);
 52         textView=(TextView)findViewById(R.id.textView1);
 53         button1=(Button)findViewById(R.id.button1);
 54         button2=(Button)findViewById(R.id.button2);
 55         button3=(Button)findViewById(R.id.button3);
 56         button4=(Button)findViewById(R.id.button4);
 57         button1.setOnClickListener(clickListener);
 58         button2.setOnClickListener(clickListener);
 59         button3.setOnClickListener(clickListener);
 60         button4.setOnClickListener(clickListener);
 61         Timer timer=new Timer();
 62         timer.schedule(timerTask, 0, 1000);
 63     } 
 64    TimerTask timerTask=new TimerTask(){
 65 
 66     @Override
 67     public void run() {
 68         if(flag)
 69         {
 70             sum++;
 71             Message message=new Message();
 72             message.what=1;
 73             handler.sendMessage(message);// TODO Auto-generated method stub
 74         }
 75     }
 76        
 77    };
 78    Handler handler=new Handler(){
 79 
 80     @Override
 81     public void handleMessage(Message msg) {
 82         // TODO Auto-generated method stub
 83         super.handleMessage(msg);
 84         if(msg.what==1){
 85             
 86             fen=sum/60;
 87             miao=sum%60;
 88             String str="";
 89             str=str+fen+":"+miao;
 90             textView.setText(str);
 91         }
 92     }
 93        
 94    };
 95    OnClickListener clickListener=new  OnClickListener(){
 96 
 97     public void onClick(View v) {
 98         // TODO Auto-generated method stub
 99         if(v.getId()==R.id.button1)
100         {
101             flag=true;
102         }
103         else if(v.getId()==R.id.button2)
104         {
105             flag=false;
106         }
107         else if(v.getId()==R.id.button3)
108         {
109             flag=false;
110             sum=0;
111         }
112         else
113         {
114             
115         }
116             
117     }
118        
119    };
120 
121 
122 }
方法一

 

  1 package com.example.mytest;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashMap;
  5 import java.util.List;
  6 import java.util.Map;
  7 import java.util.Timer;
  8 import java.util.TimerTask;
  9 
 10 import android.os.Bundle;  
 11 import android.os.Handler;
 12 import android.os.Message;
 13 import android.os.SystemClock;
 14 import android.text.Html;
 15 import android.text.SpannableString;
 16 import android.text.Spanned;
 17 import android.text.method.LinkMovementMethod;
 18 import android.text.style.ForegroundColorSpan;
 19 import android.text.style.URLSpan;
 20 import android.util.Log;
 21 import android.view.KeyEvent;
 22 import android.view.MotionEvent;  
 23 import android.view.View;  
 24 import android.view.View.OnClickListener;
 25 import android.view.View.OnKeyListener;
 26 import android.view.View.OnTouchListener;  
 27 import android.widget.ArrayAdapter;
 28 import android.widget.Button;
 29 import android.widget.Chronometer;
 30 import android.widget.Chronometer.OnChronometerTickListener;
 31 import android.widget.EditText;
 32 import android.widget.FrameLayout;  
 33 import android.widget.ListView;
 34 import android.widget.SimpleAdapter;
 35 import android.widget.TextView;
 36 import android.widget.Toast;
 37 import android.app.Activity;  
 38 import android.graphics.Color;
 39 import android.graphics.drawable.Drawable;
 40   
 41  
 42 
 43 public class MainActivity extends Activity { 
 44     private Button button1,button2,button3,button4;
 45     private TextView textView;
 46     private int sum=0,fen,miao;
 47     private boolean flag=false;
 48     Handler handler=new Handler();
 49     MyThread myThread=new MyThread();
 50    protected void onCreate(Bundle savedInstanceState) {  
 51         
 52         super.onCreate(savedInstanceState);
 53         setContentView(R.layout.activity_main);
 54         textView=(TextView)findViewById(R.id.textView1);
 55         button1=(Button)findViewById(R.id.button1);
 56         button2=(Button)findViewById(R.id.button2);
 57         button3=(Button)findViewById(R.id.button3);
 58         button4=(Button)findViewById(R.id.button4);
 59         button1.setOnClickListener(clickListener);
 60         button2.setOnClickListener(clickListener);
 61         button3.setOnClickListener(clickListener);
 62         button4.setOnClickListener(clickListener);
 63 
 64     } 
 65    class MyThread extends Thread{
 66     @Override
 67     public void run() {
 68         // TODO Auto-generated method stub
 69         super.run();
 70         sum++;
 71         fen=sum/60;
 72         miao=sum%60;
 73         String str="";
 74         str=str+fen+":"+miao;
 75         textView.setText(str);
 76         handler.postDelayed(myThread, 1000);
 77         
 78     }
 79     }
 80    OnClickListener clickListener=new  OnClickListener(){
 81         public void onClick(View v) {
 82             // TODO Auto-generated method stub
 83             if(v.getId()==R.id.button1)
 84             {
 85                 handler.post(myThread);
 86             }
 87             else if(v.getId()==R.id.button2)
 88             {
 89                 handler.removeCallbacks(myThread);
 90             }
 91             else if(v.getId()==R.id.button3)
 92             {
 93                 flag=false;
 94                 sum=0;
 95             }
 96             else
 97             {
 98                 
 99             }
100                 
101         }
102            
103        };
104        
105    
106 
107 
108 }
方法二

 

转载于:https://www.cnblogs.com/share-nc/p/6565413.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值