我們將JDK中自帶的Timer和TimerTask兩個類結合使用,可以實現執行一次定時任務,或者定期重復執行任務。
下面直接上例子,這個例子實現的是模擬發射火箭……,那啥,這節課的例子有點水啊。
1、新建一個項目:Lesson34_Timer。
2、MainActivity.java代碼如下:
Java代碼
- package basic.android.timer;
-
- import java.util.Timer;
- import java.util.TimerTask;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
-
- public class MainActivity extends Activity {
-
- Timer timer;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- // 定義UI組件
- final TextView tv1 = (TextView) findViewById(R.id.textView1);
- Button b1 = (Button) findViewById(R.id.button1);
-
- Log.i("yao", Thread.currentThread().getName());
-
- // 定義Handler
- final Handler handler = new Handler() {
-
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- //handler處理消息
- if(msg.what>0){
- tv1.setText("" + msg.what);
- }else{
- //在handler裡可以更改UI組件
- tv1.setText("點火!");
- timer.cancel();
- }
- }
- };
-
- // 定義按鈕的點擊監聽器
- b1.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
- // 定義計時器
- timer = new Timer();
-
- // 定義計劃任務,根據參數的不同可以完成以下種類的工作:在固定時間執行某任務,在固定時間開始重復執行某任務,重復時間間隔可控,在延遲多久後執行某任務,在延遲多久後重復執行某任務,重復時間間隔可控
- timer.schedule(new TimerTask() {
- int i = 10;
-
- // TimerTask 是個抽象類,實現的是Runable類
- @Override
- public void run() {
-
- Log.i("yao", Thread.currentThread().getName());
-
- //定義一個消息傳過去
- Message msg = new Message();
- msg.what = i--;
- handler.sendMessage(msg);
- }
-
- }, 1000, 200);
- }
- });
-
- }
-
- }
3、布局文件,配置文件啊我都不上了啊,比較簡單了,直接編譯運行程序,查看結果:
好吧,本講就這樣結束了,其實你也學到了點東西哈:在Android裡進行時間調度還是有方法的;對Android進行UI控制還是要用Handler的,等等。弱弱的問一句,那些悄悄定時發短信的垃圾程序是用啥技術實現的呢?