1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.hanqi.testapp2.TestActivity6"
11 android:orientation="vertical">
12
13 <TextView
14 android:layout_width="match_parent"
15 android:layout_height="wrap_content"
16 android:text="城市1"
17 android:id="@+id/tv_3"/>
18 <TextView
19 android:layout_width="match_parent"
20 android:layout_height="wrap_content"
21 android:text="城市2"
22 android:id="@+id/tv_4"/>
23 <Button
24 android:layout_width="match_parent"
25 android:layout_height="wrap_content"
26 android:text="启动"
27 android:onClick="bt1_OnClick"/>
28
29 <TextView
30 android:layout_width="wrap_content"
31 android:layout_height="wrap_content"
32 android:text="接收的消息"
33 android:id="@+id/tv_5"/>
34
35 <Button
36 android:layout_width="match_parent"
37 android:layout_height="wrap_content"
38 android:text="发消息"
39 android:onClick="bt2_OnClick"/>
40
41 <TextView
42 android:layout_width="wrap_content"
43 android:layout_height="wrap_content"
44 android:text="10"
45 android:id="@+id/tv_6"
46 android:layout_gravity="center"/>
47
48 <Button
49 android:layout_width="match_parent"
50 android:layout_height="wrap_content"
51 android:text="增加"
52 android:onClick="bt3_OnClick"
53 android:id="@+id/bt_3"/>
54
55 <Button
56 android:layout_width="match_parent"
57 android:layout_height="wrap_content"
58 android:text="减少"
59 android:onClick="bt3_OnClick"
60 android:id="@+id/bt_4"/>
61
62 <Button
63 android:layout_width="match_parent"
64 android:layout_height="wrap_content"
65 android:text="暂停"
66 android:onClick="bt3_OnClick"
67 android:id="@+id/bt_5"
68 android:enabled="false"/>
69
70 </LinearLayout>
1 package com.hanqi.testapp2;
2
3 import android.os.Handler;
4 import android.os.Message;
5 import android.support.v7.app.AppCompatActivity;
6 import android.os.Bundle;
7 import android.view.View;
8 import android.widget.Button;
9 import android.widget.TextView;
10 import android.widget.Toast;
11
12 import java.util.Random;
13
14 public class TestActivity6 extends AppCompatActivity {
15
16 TextView tv_3, tv_4, tv_5,tv_6;
17
18 Button bt_3, bt_4, bt_5;
19
20 //定义Handler
21 Handler h = new Handler(){
22 @Override
23 public void handleMessage(Message msg) {
24 super.handleMessage(msg);
25
26 //处理消息
27 if (msg.what == 1)
28 {
29 String m = msg.obj.toString();
30
31 tv_5.setText(tv_5.getText() + " " + m);
32 }
33 else if (msg.what == 2)
34 {
35 tv_5.setText(tv_5.getText() + " 空消息");
36 }
37 }
38 };
39
40 int i = 10;
41
42 Handler hl = new Handler()
43 {
44 @Override
45 public void handleMessage(Message msg) {
46 super.handleMessage(msg);
47
48 switch (msg.what)
49 {
50 case 1:
51
52 bt_3.setEnabled(false);
53 bt_4.setEnabled(true);
54 bt_5.setEnabled(true);
55
56 if (i == 20)
57 {
58 bt_5.setEnabled(false);
59 return;
60 }
61
62 i++;
63
64 tv_6.setText(i + "");
65
66 //发送
67 hl.sendEmptyMessageDelayed(1, 1000);
68
69 hl.removeMessages(2);
70
71 break;
72
73 case 2:
74
75 bt_3.setEnabled(true);
76 bt_4.setEnabled(false);
77 bt_5.setEnabled(true);
78
79 if (i == 1)
80 {
81 bt_5.setEnabled(false);
82 return;
83 }
84
85 i--;
86
87 tv_6.setText(i + "");
88
89 //发送
90 hl.sendEmptyMessageDelayed(2,1000);
91
92 hl.removeMessages(1);
93
94 break;
95
96 case 3:
97
98 bt_3.setEnabled(true);
99 bt_4.setEnabled(true);
100 bt_5.setEnabled(false);
101
102 hl.removeMessages(1);
103 hl.removeMessages(2);
104
105 break;
106 }
107 }
108 };
109
110 @Override
111 protected void onCreate(Bundle savedInstanceState) {
112 super.onCreate(savedInstanceState);
113 setContentView(R.layout.activity_test6);
114
115 tv_3 = (TextView)findViewById(R.id.tv_3);
116 tv_4 = (TextView)findViewById(R.id.tv_4);
117 tv_5 = (TextView)findViewById(R.id.tv_5);
118 tv_6 = (TextView)findViewById(R.id.tv_6);
119
120 bt_3 = (Button)findViewById(R.id.bt_3);
121 bt_4 = (Button)findViewById(R.id.bt_4);
122 bt_5 = (Button)findViewById(R.id.bt_5);
123 }
124
125
126 //3个按钮
127 public void bt3_OnClick(View v)
128 {
129 switch (v.getId())
130 {
131 case R.id.bt_3:
132
133 //发送增加消息
134 hl.sendEmptyMessage(1);
135
136 break;
137
138 case R.id.bt_4:
139
140 //发送减少消息
141 hl.sendEmptyMessage(2);
142
143 break;
144
145 case R.id.bt_5:
146
147 //发送暂停消息
148 hl.sendEmptyMessage(3);
149
150 break;
151 }
152 }
153
154
155 //发消息
156 public void bt2_OnClick(View v)
157 {
158 //启动线程
159 new Thread(){
160 @Override
161 public void run() {
162
163 //发送消息
164 //1、创建Message
165 Message m = Message.obtain();
166 m.what = 1;//id
167 m.obj = "新信息1";
168
169 //2、发送即时消息
170 h.sendMessage(m);
171
172 m = Message.obtain();
173 m.what = 1;//id
174 m.obj = "新信息2";
175
176 //发送延时消息
177 h.sendMessageDelayed(m,2000);
178
179 h.sendEmptyMessage(2);
180
181 h.sendEmptyMessageDelayed(2,3000);
182 }
183 }.start();
184 }
185
186
187 public void bt1_OnClick(View v)
188 {
189 tv_3.setText("");
190 tv_4.setText("");
191
192 //创建子线程1
193 new Thread(){
194 @Override
195 public void run() {
196
197 for (int i = 0; i<10; i++) {
198 try {
199 //暂停时间随机
200 Thread.sleep(new Random().nextInt(2000));
201 }
202 catch (Exception e)
203 {
204
205 }
206
207 runOnUiThread(new Runnable() {
208 @Override
209 public void run() {
210
211 tv_3.setText(tv_3.getText() + "北京");
212 }
213 });
214
215 }
216
217 runOnUiThread(new Runnable() {
218 @Override
219 public void run() {
220 Toast.makeText(TestActivity6.this, "北京 循环完成", Toast.LENGTH_SHORT).show();
221 }
222 });
223 }
224 }.start();
225
226
227
228 //创建子线程2
229 new Thread(){
230 @Override
231 public void run() {
232
233 for (int i = 0; i<10; i++) {
234 try {
235 //暂停时间随机
236 Thread.sleep(new Random().nextInt(2000));
237 }
238 catch (Exception e)
239 {
240
241 }
242
243 runOnUiThread(new Runnable() {
244 @Override
245 public void run() {
246
247 tv_4.setText(tv_4.getText() + "香港");
248 }
249 });
250
251 }
252
253 runOnUiThread(new Runnable() {
254 @Override
255 public void run() {
256 Toast.makeText(TestActivity6.this, "香港 循环完成", Toast.LENGTH_SHORT).show();
257 }
258 });
259 }
260 }.start();
261 }
262 }
![]()