本文共 1975 字,大约阅读时间需要 6 分钟。
void handleMessage(Message msg):处理消息的方法,该方法通常用于被重写。 final boolean hasMessage(int what):检查消息队列是否包含what属性指定值的消息。 final boolean hasMessage(int what,Object object):检查消息队列中是否包含what属性为指定且object属性为指定指定对象的消息。 Message obtainMessage():获取消息。 sendEmptyMessage(int what):发送空消息。 final boolean sendEmptyMessageDelayed(int what,long delayMillis):指定多少毫秒之后发送空消息。 final boolean sendMessage(Message msg):立即发送消息。 final boolean sendMessageAtTime(Message msg,long uptimeMillis):定时发送消息。 final boolean sendMessageDelayed(Message msg,long delayMillis):指定多少毫秒之后发送消息。二.消息类(Message)简介 消息类(Message)被存放在MessageQueue中,一个MessageQueue中可以包含多个Message对象,每个Message对象可以通过Message.obtain()或Handler.obtainMessage()方法获得。一个Message对象有如下5个属性:
arg1 int类型 用来存放整型数据arg2 int类型 用来存放整型数据what int类型 用来保存消息标示obj Object类型 是Object类型的任意对象replyTo Messager类型 用来指定此Message发送到何处的可选Message对象*使用Message类的属性可以携带int类型数据,如果要携带其他类型的数据,可以先将要携带的数据保存到Bundle中对象中,然后通过Message类的setData()方法将其添加到Message中。 如: Message msg = new Message(); Bundle bundle = new Bundle(); bundle.putInt("int", 1); bundle.putBoolean("boolean", false); bundle.putByte("byte", (Byte) null); bundle.putChar("char",'a'); bundle.putCharSequence("Stirng","Hello World"); bundle.putFloat("float", 12.3f); bundle.putString("String", "Hello World"); bundle.putDouble("double", 12.3); msg.setData(bundle); 总之,Message类的使用方法比较简单,在使用时,需注意以下3点: a.尽管Message有public的默认构造方法,但是通常情况下,需要使用Message.obtaion()或Handler.obtainMessage()方法来从消息池中获得空消息对象,以节省资源。 b.如果一个Message只需要携带简单的int型信息,应优先使用Message.arg1和Message.arg2属性来传递信息,这比用Bundle更节省内存。
c.尽可能使用Message.what来标识信息,以便用不同方式处理Massage。
转载请注明出处: