我是靠谱客的博主 轻松野狼,这篇文章主要介绍Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式,现在分享给大家,希望可以做个参考。

作用:

1、定时执行某种功能

2、重复执行、定时重复执行、定次数执行某种功能

类别:

1、 Thread(new Runnable)

2、Thread()

3、Timer

4、Handler

·····

代码如下:

1、布局

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/show_time" android:text="请选择一种启动方式" android:textSize="30dp" android:layout_width="match_parent" android:layout_height="100dp" /> <Button android:id="@+id/timer_1" android:textAllCaps="false" android:text="定时方式1(Thread(new Runnable))" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/timer_2" android:text="定时方式2(Thread()) " android:textAllCaps="false" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/timer_3" android:text="定时方式3(Timer) " android:textAllCaps="false" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/timer_4" android:text="定时方式4(Handler) " android:textAllCaps="false" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/clear" android:text="计时器清零 " android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_margin="10dp" android:text="方式3停止方式不同(因为Timer一旦被cancel之后就废了,只有重新构造一个)n停止:1、开启3 2、点击停止 3、再点击方式3" android:textAllCaps="false" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>

2、实现定时功能

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
package com.example.leixiansheng.mytimers; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button timer_1, timer_2, timer_3, timer_4,clear, showTime; private Timer timer; private TimerTask timerTask; private int num = 0; //计数值 private boolean flog = true; //是否停止计时 private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); showTime.setText("点击我停止计时: " + msg.what); } }; //handler 方式定时循环 private Handler handlerTimer = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (flog) { handlerTimer.sendEmptyMessageDelayed(num++, 1000); } showTime.setText("点击我停止计时: " + msg.what); if(flog == false) { flog = true; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); timer_1 = (Button) findViewById(R.id.timer_1); timer_2 = (Button) findViewById(R.id.timer_2); timer_3 = (Button) findViewById(R.id.timer_3); timer_4 = (Button) findViewById(R.id.timer_4); clear = (Button) findViewById(R.id.clear); showTime = (Button) findViewById(R.id.show_time); timer_1.setOnClickListener(this); timer_2.setOnClickListener(this); timer_3.setOnClickListener(this); timer_4.setOnClickListener(this); clear.setOnClickListener(this); showTime.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.timer_1: method_1(); break; case R.id.timer_2: method_2(); break; case R.id.timer_3: method_3(); break; case R.id.timer_4: method_4(); break; case R.id.clear: num = 0; showTime.setText("请选择一种启动方式"); break; case R.id.show_time: flog = false; break; } } private void method_4() { new Thread() { @Override public void run() { super.run(); handlerTimer.sendEmptyMessage(num++); } }.start(); } private void method_3() { //Timer一旦被cancel之后就废了,只有重新构造一个。 if (flog == true) { timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { handler.sendEmptyMessage(num++); } }; /** * 第一个参数:任务 * 第二个参数:初始启动等待时间 * 第三个参数:时间间隔 */ timer.schedule(timerTask, 0, 1000); } else { timer.cancel(); // 一定设置为null,否则定时器不会被回收 timer = null; flog = true; } //Timer 暂停重启有问题(待改进) //Timer一旦被cancel之后就废了,只有重新构造一个。 // if (flog == true) { // timerTask = new TimerTask() { // @Override // public void run() { // handler.sendEmptyMessage(num++); // } // }; // /** // * 第一个参数:任务 // * 第二个参数:初始启动等待时间 // * 第三个参数:时间间隔 // */ // timer.schedule(timerTask, 0, 1000); // } else { // timer.cancel(); // flog = true; // } } private void method_2() { //new Thread().start(); new Thread() { @Override public void run() { super.run(); while (flog) { handler.sendEmptyMessage(num++); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); flog = true; } private void method_1() { // new Thread(new Runnable).start(); new Thread(new Runnable() { @Override public void run() { while (flog) { handler.sendEmptyMessage(num++); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); flog = true; } }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对靠谱客的支持。如果你想了解更多相关内容请查看下面相关链接

最后

以上就是轻松野狼最近收集整理的关于Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式的全部内容,更多相关Android定时器实现定时执行、重复执行、定时重复执行、定次数执行内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(130)

评论列表共有 0 条评论

立即
投稿
返回
顶部