Android_Timer與Runnable兩種方法的定時器

來源:互聯網
上載者:User

標籤:

先理清概念:

Timer是一個執行任務的類,他接受TimerTask的參數;

Timer執行任務有兩種方式,一種是在某個指定的時候執行某個任務timer.schedule(Timertask task,Data data),另一種是在多長時間之後執行某個任務timer.schedule(TimerTask task,long delay);

TimerTask中執行指定的任務,但由於Android是安全執行緒的,所有的介面的更新都必須放到主線程中,所以要使用到Handler對象。

Android的CPU分配的最小單元是線程,Handler一般是在某個線程裡建立的,因而Handler和Thread就是相互綁定的,一一對應。 

而Runnable是一個介面,Thread是Runnable的子類。

下面是兩種方法的例子

 1 package com.example.test007; 2  3 import java.util.Timer; 4 import java.util.TimerTask; 5  6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.os.Handler; 9 import android.os.Message;10 import android.os.SystemClock;11 import android.widget.TextView;12 13 public class MainActivity extends Activity {14     15     private TextView tv;16     private int time=0;17     18     private final Timer timer=new Timer();19     Handler handler=new Handler(){20         @Override21         public void handleMessage(Message msg){22             ++time;23            if(msg.what == 1){24                 tv.setText("Handler,Timer以及TimeTask結合的方法:  "+ time);25             }26             super.handleMessage(msg);27         }28     };29     30     //初始化計時器任務31     TimerTask task =new TimerTask() {32         @Override33         public void run() {34             //由於主安全執行緒,頁面的更新需放到主線程中35             Message msg =new Message();36             msg.what=1;37             handler.sendMessage(msg);38         }39     };40     @Override41     public void onCreate(Bundle savedInstanceState) {42         super.onCreate(savedInstanceState);43         setContentView(R.layout.activity_main);44         tv = (TextView) findViewById(R.id.tv1);45         //隔1s執行一次46         timer.schedule(task, 1000, 1000);47     }48 }
 1 package com.example.test007; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.widget.TextView; 7  8 public class TimeActivity extends Activity { 9     private TextView tv;10     private int time=0;11     12     private Handler handler = new Handler();13     private Runnable runnable = new Runnable() {14         @Override15         public void run() {16             ++time;17             tv.setText("Handler的postDelayed(Runnable, long)方法 : "+ time);18             handler.postDelayed(this, 1000);19         }20     };21     @Override22     protected void onCreate(Bundle savedInstanceState) {23         super.onCreate(savedInstanceState);24         setContentView(R.layout.test);25         tv = (TextView) findViewById(R.id.tv);26         handler.postDelayed(runnable, 1000);27         28     }29 30 }

 

Android_Timer與Runnable兩種方法的定時器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.