Android常用的3种定时刷新UI的方法和子线程能否刷新UI那些事

来源:互联网 发布:优酷网络剧合作模式 编辑:程序博客网 时间:2024/05/16 08:30

  1. import java.util.Timer;  
  2. import java.util.TimerTask;  
  3.   
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9. import android.widget.Button;  
  10. import android.widget.TextView;  
  11.   
  12.   
  13. public class MainActivity extends Activity {  
  14.     TextView text1,text2, text3;  
  15.     Button button;  
  16.   
  17.   
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.           
  23.         text1 = (TextView) findViewById(R.id.info1);  
  24.         text2 = (TextView) findViewById(R.id.info2);  
  25.         text3 = (TextView) findViewById(R.id.info3);  
  26.         button = (Button)findViewById(R.id.button1);  
  27.         //第一种刷新Timer,TimerTask  
  28.         timer.schedule(new TimerTask() {  
  29.               
  30.             @Override  
  31.             public void run() {  
  32.                 handler.sendEmptyMessage(0);  
  33.             }  
  34.         }, 0, 1000);//延时0秒后每隔1秒刷新一次。  
  35.         //结束timer调用:  
  36.       //timer.cancel();    
  37.           
  38.         //第二种mHandler.postDelayed(runnable, 1000);  
  39.         mHandler.removeCallbacks(runnable);  
  40.         mHandler.postDelayed(runnable, 1000);  
  41.         //结束mHandler调用  
  42.       //mHandler.removeCallbacks(runnable);    
  43.           
  44.         //第三种调用2次showHandler.sendMessageDelayed(message, 1000);形成循环。  
  45.         startShowUI();  
  46.         //取消startShowUI()的调用  
  47.       //showHandler.removeMessages(0);  
  48.     }  
  49.       
  50.     //第一种方法  
  51.     Timer timer = new Timer();  
  52.     private int temp1 = 0;  
  53.     private Handler handler = new Handler(){  
  54.         public void handleMessage(Message msg) {  
  55.             text1.setText("count temp1 = " + temp1);  
  56.             temp1++;  
  57.         };  
  58.     };  
  59.       
  60.      //第二种方法  
  61.     private int temp2 = 0;  
  62.     private Handler mHandler = new Handler();  
  63.       
  64.     private Runnable runnable = new Runnable() {  
  65.           
  66.         @Override  
  67.         public void run() {  
  68.             text2.setText("count temp2 = " + temp2);  
  69.             temp2++;  
  70.             mHandler.postDelayed(runnable, 1000);  
  71.         }  
  72.     };  
  73.       
  74.     //第三种方法  
  75.     private Handler showHandler;  
  76.     private int temp3 = 0;  
  77.     private void startShowUI(){  
  78.         showHandler = new Handler(){  
  79.           @Override  
  80.         public void handleMessage(Message msg) {  
  81.             super.handleMessage(msg);  
  82.             text3.setText("count temp3 = " + temp3);  
  83.             temp3++;  
  84.             Message message = handler.obtainMessage(0);   
  85.             showHandler.sendMessageDelayed(message, 1000);  
  86.         }    
  87.         };  
  88.         Message message = handler.obtainMessage(0);   
  89.         showHandler.sendMessageDelayed(message, 1000);  
  90.     }  
  91. }  
原创粉丝点击