/
HandlerUtil.java
112 lines (98 loc) · 2.77 KB
/
HandlerUtil.java
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
package com.liyi.sutils.utils;
import android.os.Handler;
import android.os.Message;
import java.util.ArrayList;
import java.util.List;
/**
* Handler 相关工具类
*/
public class HandlerUtil {
private static Handler mHandler;
private static List<OnReceiveMessageListener> mReceiveMsgListenerList;
private HandlerUtil() {
init();
}
public static HandlerUtil getInstance() {
return HandlerUtilHolder.INSTANCE;
}
private static final class HandlerUtilHolder {
private static final HandlerUtil INSTANCE = new HandlerUtil();
}
private void init() {
if (mReceiveMsgListenerList == null)
mReceiveMsgListenerList = new ArrayList<OnReceiveMessageListener>();
if (mHandler == null) {
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (mReceiveMsgListenerList != null && mReceiveMsgListenerList.size() > 0) {
for (OnReceiveMessageListener listener : mReceiveMsgListenerList) {
listener.handlerMessage(msg);
}
}
}
};
}
}
/**
* 注册 Handler
*
* @param listener 收到消息回调接口
*/
public void register(OnReceiveMessageListener listener) {
init();
mReceiveMsgListenerList.add(listener);
}
/**
* 取消注册 Handler
*
* @param index 收到消息回调接口的下标
*/
public void unregister(int index) {
if (mReceiveMsgListenerList != null
&& index >= 0 && index < mReceiveMsgListenerList.size()) {
mReceiveMsgListenerList.remove(index);
}
}
/**
* 取消注册 Handler
*
* @param listener 收到消息回调接口
*/
public void unregister(OnReceiveMessageListener listener) {
if (mReceiveMsgListenerList != null && listener != null) {
mReceiveMsgListenerList.remove(listener);
}
}
/**
* 获取 Handler 对象
*
* @return
*/
public Handler getHandler() {
return mHandler;
}
/**
* 获取所有事件
*
* @return 事件列表
*/
public List<OnReceiveMessageListener> getReceiveMsgListenerList() {
return mReceiveMsgListenerList;
}
/**
* 清除所有事件
*/
public void clear() {
if (mReceiveMsgListenerList != null && mReceiveMsgListenerList.size() > 0) {
mReceiveMsgListenerList.clear();
}
}
/**
* 收到消息回调接口
*/
public interface OnReceiveMessageListener {
void handlerMessage(Message msg);
}
}