安卓bundle、handler、message关系和实现(自己理解而已不一定准确):
bundle英文翻译为捆、包。见译知义,bundle类就是一个数据载体,里存放的是key-value名值对形式的值,类型可以是8大基本类型及各种数组和string类型及其他,其常用方法就是putxxx(“key”,“value”)和getxxx(“key”,“value”),其中xxx代表这各数据类型比如bundle.putint(“a”,“4”);其意思就是将一个int变量a其对应数值为4放入bundle实例中,也就是说这个bundle可以是一堆数据的打包,用于传输。
message意思即为信息消息,差不多同样也是携带数据的一个载体,但是一般他是handler来传输消息数据的,其中包括两个整形类型数据和一个object类型数据加一个用户自定义的what代码数值区分接收者,因为object类是根类所以该携带的数据类型可以是任何类,当然也可以使用上面的bundle类型数据了。一个线程中有个存放message的队列叫做messagequeue------一个链表形式的message队列。
handler英文意思为搬运工,操作工。意思他好像一个传输数据的工具类,而这个传输数据一般用于线程间,当子线程开启后需要传输一些数据给主线程时就使用他,他主要有两个作用也就是两个方法,一个是发出数据一个是处理数据,分别为sendmessage和handlemessage,在主线程中实例化后需要重写其handlemessage方法,在子线程中调用sendmessage方法,其运行机制就是子线程中调用sendmessage(message msg)方法后将其中携带的数据message放入一个message队列中,由一个message队列管理者looper来循环处理这些message,当处理到该message后就会将其返送给其主线程的对应的已实例化的handler并使用重新的handlemessage方法处理。
安卓bundle、handler、message关系和实现
最新推荐文章于 2023-04-28 15:56:04 发布