一、应用范围

       定时器一般应用于以下两个方面:

      (1)经过一段时间执行某个任务。

      (2)每隔一段时间执行某个任务。

       在Android中我们可以通过以下几个方法来实现以上的要求。

      (1)使用Handler和Thread的Sleep方法来实现

      (2)使用Handler、Timer和TimeTask来实现。

      (3)使用Handler的postDelayed()来实现。

 

二、实例

        当我们进入一个应用时可以先暂停几秒钟,显示一张Logo或者其他图片,然后再进入主界面。这里我们就可以通过定时器来实现。

       (1)使用Handler和Thread的Sleep方法来实现:

1 package com.example.viewpager.act;
 2 
 3 import com.example.viewpager.F;
 4 import com.example.viewpager.R;
 5 
 6 import android.os.Bundle;
 7 import android.os.Handler;
 8 import android.os.Message;
 9 import android.app.Activity;
10 import android.content.Intent;
11 import android.view.Window;
12 import android.view.WindowManager;
13 
14 /**
15  * 进入应用经过2秒钟跳到欢迎页
16  * 
17  * @author liji
18  * 
19  *         1、定时器的使用
20  * 
21  */
22 public class StartAct extends Activity {
23 
24     private boolean is;
25     private Handler mHandler = new Handler() {
26         @Override
27         public void handleMessage(Message msg) {
28             if (1 == msg.what) {
29                 Intent intent = new Intent(StartAct.this, WelcomeAct.class);
30                 startActivity(intent);
31                 StartAct.this.finish();
32             }
33         }
34 
35     };
36 
37     @Override
38     protected void onCreate(Bundle savedInstanceState) {
39         super.onCreate(savedInstanceState);
40         /**
41          * 全屏显示
42          */
43         this.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
44         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
45                 WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏
46         setContentView(R.layout.activity_start);
47 
48         new Thread() {
49             @Override
50             public void run() {
51                 try {
52                     /** 暂停2秒 */
53                     Thread.sleep(2000);
54                     Message message = new Message();
55                     message.what = 1;
56                     mHandler.sendMessage(message);
57                 } catch (Exception e) {
58                     e.printStackTrace();
59                 }
60             }
61 
62         }.start();
63     }
64 
65 }

       (2)使用Handler、Timer和TimeTask来实现。

1 package com.example.timeschedule;
 2 
 3 import java.util.Timer;
 4 import java.util.TimerTask;
 5 
 6 import com.example.viewpager.act.StartAct;
 7 import com.example.viewpager.act.WelcomeAct;
 8 
 9 import android.os.Bundle;
10 import android.os.Handler;
11 import android.os.Message;
12 import android.app.Activity;
13 import android.content.Intent;
14 import android.text.style.SuperscriptSpan;
15 import android.view.Menu;
16 import android.widget.TextView;
17 
18 public class MainActivity extends Activity {
19 
20     int i=0;
21     TextView tView;
22     Timer timer=new Timer();
23     Handler mHandler=new Handler(){
24         @Override
25         public void handleMessage(Message msg) {
26             super.handleMessage(msg);
27             if (msg.what==1) {
28                 Intent intent = new Intent(MainActivity.this, WelcomeAct.class);
29                 startActivity(intent);
30                 MainActivity.this.finish();
31             }
32         }
33     };
34     TimerTask task=new TimerTask() {
35         @Override
36         public void run() {
37             Message message=new Message();
38             message.what=1;
39             mHandler.sendMessage(message);
40         }
41     };
42     @Override
43     protected void onCreate(Bundle savedInstanceState) {
44         super.onCreate(savedInstanceState);
45         setContentView(R.layout.activity_main);
46         timer.schedule(task, 2000);
47     }
48 
49 }

       (3)使用Handler的postDelayed()来实现。