当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理
时间: 2023-08-10 22:00:28 浏览: 48
当一个Activity有多个Handler时,我们可以通过在发送消息时使用标识符或者自定义的消息类型来区分当前消息由哪个Handler处理。
一种常见的做法是在消息的what字段中设置标识符。每个Handler可以定义自己的标识符,用于区分消息来源。在发送消息时,我们可以使用不同的标识符来指定目标Handler,从而确保消息被正确地分发到相应的Handler进行处理。
例如,我们可以在不同的Handler中定义如下的标识符:
```java
private static final int HANDLER_A_MESSAGE = 1;
private static final int HANDLER_B_MESSAGE = 2;
```
然后,在发送消息时,我们可以指定目标Handler的标识符:
```java
handlerA.sendEmptyMessage(HANDLER_A_MESSAGE);
handlerB.sendEmptyMessage(HANDLER_B_MESSAGE);
```
当接收到消息时,我们可以根据消息的what字段来判断当前消息由哪个Handler处理:
```java
public void handleMessage(Message msg) {
switch (msg.what) {
case HANDLER_A_MESSAGE:
// 处理Handler A的消息
break;
case HANDLER_B_MESSAGE:
// 处理Handler B的消息
break;
default:
super.handleMessage(msg);
break;
}
}
```
通过这种方式,我们可以区分当前消息由哪个Handler处理,并且在每个Handler中定义不同的处理逻辑。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)