Android BundleHandler和Message类介绍
Posted 龙种人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android BundleHandler和Message类介绍相关的知识,希望对你有一定的参考价值。
- Bundle是一个载体,可以存放基本数据类型、对象等内容,相当于一辆汽车,可以装载很多东西,然后运到需要的地方,例如:
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组件的结果更新。
以上是关于Android BundleHandler和Message类介绍的主要内容,如果未能解决你的问题,请参考以下文章