Android BundleHandler和Message类介绍

幽沉谢世事,俯默窥唐虞。这篇文章主要讲述Android BundleHandler和Message类介绍相关的知识,希望能为你提供帮助。

  • Bundle是一个载体,可以存放基本数据类型、对象等内容,相当于一辆汽车,可以装载很多东西,然后运到需要的地方,例如:
【Android BundleHandler和Message类介绍】 
Bundle mBundle=new Bundle(); mBundle.putString("name","zhaolinit"); mBundle.putInt("number",123456); mBundle.putBoolean("flag",false); //然后,放到Intent对象中 Intent mIntent=new Intent(); mIntent.putExtras(mBundle);

 
 
  • Message:包含描述和任意数据对象的消息,用于发送给Handler          
它的成员变量如下:
public final class Message implements Parcelable { public int what; public int arg1; public int arg2; public Object obj; ... }

其中what用于标识这条消息,也可以让接收者知道消息是关于什么的。arg1和arg2用于发送一些integer类型的值。obj用于传输任意类型的值。
 
  • Handler:消息处理者,通过重写Handler的handleMessage()方法,在方法中处理接收到的不同消息,例如:
Handler mHandler=new Handler(){@Override public void handleMessage(Message msg) { switch (msg.what) { case TestHandler.TEST:
progressValue += msg.arg1; Log.d("progressValue--------------> ", progressValue+"");
break;
}
}
}

在其它地方,通过sendMessage()方法,发送消息,以供handleMessage()方法接受
class myThread implements Runnable { public void run() { while (!Thread.currentThread().isInterrupted()) {Message message = new Message(); message.what = TestHandler.TEST; TestHandler.this.myHandler.sendMessage(message); try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } }

            通过子线程处理一些耗时的操作,然后把处理后的结果通过sendMessage()方法发送到UI主线程。让主线程的Handler进行UI组件的结果更新。         






    推荐阅读