一、应用范围
定时器一般应用于以下两个方面:
(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()来实现。