为什么Android Handler参数化为int?

时间:2013-01-18 01:11:26

标签: java android handler

我对Android中的android.os.Handler机制感到困惑。为什么message handling使用int来编码邮件类型?在阅读了Effective Java之后,我已经学习了如何使用int来支持这种类型的Enum,我感到非常不安全,如何继续这里。

我想使用状态模式,定义从Handler子类化的不同状态类,以便处理来自View的不同消息。

public class ReadyState extends Handler {

     @Override
     public void handleMessage(Message msg, int what) {
          // ...      
     }
}

我是否必须使用int对状态进行编码,是否会使用Enum字段进行编码:

enum Action {
    START(0), STOP(1), BACKFLIP(2);

    int code;
    public Action(int code) { this.code = code }
}

有替代方法吗?

2 个答案:

答案 0 :(得分:3)

  

为什么消息处理使用int来编码消息类型?

它需要一个int作为参数,因为库的作者不能将你的枚举放在那里,他们甚至不知道它叫什么!

答案 1 :(得分:1)

如果你想将what参数映射到枚举,那就是要走的路。

将它作为int意味着您可以将参数用作位集或简单代码或实际数据或其他任何内容。