当前位置: 首页 > news >正文

武汉哪里做网站好青岛谷歌优化公司

武汉哪里做网站好,青岛谷歌优化公司,创意设计公司的经营范围,物流公司官方网站物流专线一、Handler的作用 1、Handler的作用是在andorid中实现线程间的通信。我们常说的说的,子线程处理逻辑,主线程更新UI是上述情况的一个子集。 二、源码分析 1、Handler源码 源码地址:http://androidxref.com/7.1.1_r6/xref/frameworks/base/co…

一、Handler的作用
1、Handler的作用是在andorid中实现线程间的通信。我们常说的说的,子线程处理逻辑,主线程更新UI是上述情况的一个子集。

二、源码分析
1、Handler源码
源码地址:http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/os/Handler.java

2、具体分析
创建Handler并消费的过程
先看下Handler的构造函数的核心部分

mLooper = Looper.myLooper();
if (mLooper == null) {
throw new RuntimeException(
“Can’t create handler inside thread that has not called Looper.prepare()”);
}
mQueue = mLooper.mQueue;
mCallback = callback;
mAsynchronous = async;
Handler在默认构造函数里检查了当前线程是否是Looper线程,如果不是Looper线程就抛出异常。我们常在主线程直接

new Handler()
这样做之所以没问题,是因为ActivityThread默认创建了Looper对象。如果我们想在非主线程T里创建Handler对象需显示调用

Looper.prepare()
那另外一种构造Handler的方式是

public Handler(Looper looper, Callback callback, boolean async) {
mLooper = looper;
mQueue = looper.mQueue;
mCallback = callback;
mAsynchronous = async;
}
这种方法要显示的传进一个Looper对象。获取Looper对象的方法是

thread.getLooper();
前提是thread线程已经是looper线程,例如HandlerThread线程的对象就是looper线程。
通过以上2种方法,我们就创建可以创建一个Looper对象,此时可以直接构造一个Handler对象出来,并开启Loop循环

Looper.loop();//这是一个死循环for(;😉,此循环在线程T里执行
从构造函数核心部分可知,Handler通过mLooper对象持有了一个MessageQueue对象mQueue。loop循环就是在遍历这个mQueue,当有Message对象msg进入队列的时候,msg会被立刻通过

mQueue.next();//如果没有消息,会阻塞在这里
方法被取出,通过

msg.dispatchMessage();//在线程T里执行
回调给Handler处理,Handler再通过

handleMessage();//在线程T里执行
将消息下发给具体处理业务的逻辑。

生产的过程
还是先看一段源码

private boolean enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis) {
msg.target = this;
if (mAsynchronous) {
msg.setAsynchronous(true);
}
return queue.enqueueMessage(msg, uptimeMillis);
}
我们在所有其他线程A中,通过Handler的对象sendMessage或者post等方法生产的消息,最终都会通过这里被enqueue到该Handler持有Looper成员变量的MessageQueue成员变量中,enqueue的过程必须加锁,这里就不展开说了。

上面就是一个生产过程,实现了从线程A中将消息发送到线程T中。

三、总结
Handler必须搭配Looper使用,这是因为MessageQuene只有进出的接口,没有loop接口,需要Looper对象拿出消息并回调给Hander对象进行处理。

http://www.khdw.cn/news/45556.html

相关文章:

  • 做代理去哪个网站找seo诊断服务
  • 国外销售网站长沙靠谱关键词优化公司电话
  • 中国十大网络公司排行榜系统优化工具
  • 德州网站建设公司山东大学经济研究院
  • 龙华企业网站建设公司怎么网络推广自己业务
  • 政府网站建设进度seo新方法
  • 如何建设机关用房管理系统网站seo是什么意思 职业
  • 莱芜市人民政府搜索引擎排名优化公司
  • 深圳网站建设服务公司合肥网络推广
  • 简历免费模板下载seo产品优化免费软件
  • 小说网站要怎么做网站排名系统
  • 石家庄新钥匙建站seo关键词推广
  • 网站后台信息发布这样做重庆网
  • 鄞州区卖场设计网站建设seo网站整站优化
  • 个人备案门户网站免费网站推广网站破解版
  • 网站上做网上支付功能舆情分析报告案例
  • 如何编辑网站源代码网络培训心得体会5篇
  • 专业做网站的公司有没有服务器广州百度推广优化排名
  • wordpress重置秘密seo短视频
  • 如何修改响应式网站模板百度指数下载手机版
  • 四川做网站设计哪家好广告优化师前景怎样
  • 网站域名申请之后如何做网站网站注册步骤
  • 韩国购物网站百度推广费用多少钱
  • 注册 网站开发 公司seo优化快排
  • apache 做网站免费网站怎么申请
  • 国内旅游网站排行榜软件商店安装
  • 装饰公司怎么做网站seo就业
  • 网站引导页是什么问题百度推广客户端下载
  • 附近的网站设计制作价格百度搜索引擎网址
  • 做婚庆网站有哪些内容丁的老头seo博客