-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathTestHandler.java
More file actions
124 lines (110 loc) · 3.15 KB
/
TestHandler.java
File metadata and controls
124 lines (110 loc) · 3.15 KB
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
package com.example.andriodtest;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
public class TestHandler implements Runnable {
// // 一个线程的Looper对象允许给多个不同的Handler对象使用,而且之间相互独立的。示例如下:
// 程序输出:
// MyHandler: MSG_ID_ZERO handler1
// MyHandler2: MSG_ID_ZERO handler2
private static final String TAG = "TestHandler";
private HandlerThread mThread = null;
private class MyHandler extends Handler {
private static final String TAG = "MyHandler";
public static final int MSG_ID_DEFAULT = -1;
public static final int MSG_ID_ZERO = 0;
public static final int MSG_ID_ONE = 1;
public static final int MSG_ID_TWO = 2;
public static final int MSG_ID_THREE = 3;
public static final int MSG_ID_FOUR = 4;
public MyHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case MSG_ID_ZERO:
Log.d(TAG, "MSG_ID_ZERO " + (String)msg.obj);
break;
case MSG_ID_ONE:
Log.d(TAG, "MSG_ID_ONE " + (String)msg.obj);
break;
case MSG_ID_TWO:
Log.d(TAG, "MSG_ID_TWO " + (String)msg.obj);
break;
case MSG_ID_THREE:
Log.d(TAG, "MSG_ID_THREE " + (String)msg.obj);
break;
case MSG_ID_FOUR:
Log.d(TAG, "MSG_ID_FOUR " + (String)msg.obj);
break;
default:
Log.d(TAG, "MSG_ID_DEFAULT " + (String)msg.obj);
}
super.handleMessage(msg);
}
}
private class MyHandler2 extends Handler {
private static final String TAG = "MyHandler2";
public static final int MSG_ID_DEFAULT = -1;
public static final int MSG_ID_ZERO = 0;
public static final int MSG_ID_ONE = 1;
public static final int MSG_ID_TWO = 2;
public static final int MSG_ID_THREE = 3;
public static final int MSG_ID_FOUR = 4;
public MyHandler2(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case MSG_ID_ZERO:
Log.d(TAG, "MSG_ID_ZERO " + (String)msg.obj);
break;
case MSG_ID_ONE:
Log.d(TAG, "MSG_ID_ONE " + (String)msg.obj);
break;
case MSG_ID_TWO:
Log.d(TAG, "MSG_ID_TWO " + (String)msg.obj);
break;
case MSG_ID_THREE:
Log.d(TAG, "MSG_ID_THREE " + (String)msg.obj);
break;
case MSG_ID_FOUR:
Log.d(TAG, "MSG_ID_FOUR " + (String)msg.obj);
break;
default:
Log.d(TAG, "MSG_ID_DEFAULT " + (String)msg.obj);
}
super.handleMessage(msg);
}
}
private Handler mHandler1, mHandler2;
public void init() {
mThread = new HandlerThread(TAG);
mThread.start();
mHandler1 = new MyHandler(mThread.getLooper());
mHandler2 = new MyHandler2(mThread.getLooper());
}
public void uninit() {
mThread.getLooper().quit();
mHandler1 = null;
mHandler2 = null;
mThread = null;
}
@Override
public void run() {
Message msg1 = Message.obtain();
msg1.what = MyHandler.MSG_ID_ZERO;
msg1.obj = "handler1";
mHandler1.sendMessage(msg1);
Message msg2 = Message.obtain();
msg2.what = MyHandler.MSG_ID_ZERO;
msg2.obj = "handler2";
mHandler2.sendMessage(msg2);
}
}