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

深圳专业制作网站的公司哪家好电商培训课程

深圳专业制作网站的公司哪家好,电商培训课程,《网站建设》项目实训报告,网络文化经营许可证申请条件Handler是用于实现线程间通信和任务调度的一种机(Handler、 Looper、MessageQueue、 Message)。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI&#xff0…

Handler是用于实现线程间通信和任务调度的一种机(Handler、 LooperMessageQueue、 Message)。Handler 允许线程间发送MessageRunnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI,需要通过 Handler发送消息给主线程,进而达到更新UI的目的。

先创建一个与一个线程相关联Handler实例(Handler与创建它的线程相关联,而且也只与创建它的线程相关联),在Handler的构造函数中获取该线程的Looper对象,然后将Handler与Looper绑定。Handler通过post()、sendMessage()等方法将一个Message对象插入到Looper的MessageQueue中,Looper会不断地从MessageQueue中取出Message并将其传递给Handler的dispatchMessage()方法,dispatchMessage()方法负责处理取出的Message,根据Message的类型执行相应的操作,如回调、更新UI等。
一个线程:只有一个Looper,只有一个MessageQueue,可以有多个Handler。

1.Message  (可携带数据通过whatarg1arg2obj字段)

携带:target=Handler(线程通过target标识发送Message给目标Handler)。

2.Message Queue

存放通过Handler 发送的Message 的消息队列。

sendMessage发送消息时消息的时间when = SystemClock.uptimeMillis() + delayMillis

SystemClock.uptimeMillis()是手机开机相对时间二者加起来肯定不为0

3.Handler

消息处理者,用于发送和接收处理消息。
发送消息 sendMessage()
处理消息 handleMessage()

4.Looper

内部包含一个死循环的MessageQueue,用于存储handler发送的MessageLooper则是不断的从消息队列中取消,如果有消息就取出发送给Handler 处理,没有则阻塞。

1、面试:Handler A发送的 Message 为啥不会跑到 Handler B的 HandleMessage中被处理?

回答:当handler发送消息时(enqueueMessage)会把自身作为Message的一个属性值(msg.target)封装到Message对象汇总一并发送到消息队列中。 Looper轮循出消息会拿到消息的target属性这样就可以知道每条消息是属于哪个hadler对象的。然后让相应对象的handler进行消息处理。

2、面试:handler.post和handler.sendMessage的区别和联系?

回答:1、handler.sendMessage通过Message对象(可携带数据通过whatarg1arg2obj字段),传递复杂数据或区分不同消息类型的场景。

          2、handler.post不需要Message对象,直接传递Runnable。简单任务(如UI更新、延迟操作)

         3、底层联系:handler.post内部会将Runnable包装成一个Message(设置callback字段为该Runnable),然后调用sendMessageDelayed()。当Looper处理该Message时,会优先执行Runnable.run(),而非handleMessage()

3、Looper死循环为什么不会导致ANR?

回答:应用卡死 ANR压根与Looper没有关系,应用在没有消息需要处理的时候,他是在睡眠,释放线程。卡死是ANR,是如果消息队列里有消息,looper却没有及时处理导致的,和Looper是死循环无关。

4、怎么创建Message?

回答:

1.Message message = new message();   会创建一个全新的Message对象,增加内存。
2.Message message = Message.obtain(); 从全局的Message对象池中获取复用实例(避免重复创建)。
3.Message message = handler.obtainMessage();Handler关联的池获取,本质调用Message.obtain(),但自动绑定当前Handler

相关文章:
Handler 使用方法介绍
安卓 Handler面试(1)_android handler机制面试-CSDN博客
【Android面试】Android线程间通信Handler消息机制_android handler机制面试-CSDN博客

AskManyAI

http://www.cadmedia.cn/news/818.html

相关文章:

  • 实用网站建设期末考试怎么做好销售
  • 猫咪社区官网在线最新刷移动关键词优化
  • 高端品牌网站建设建议深圳网络推广招聘
  • 开发公司以现金方式补贴给客户seo培训讲师招聘
  • 广州营销型网站建设公司百度图片收录提交入口
  • 网站安全加固八戒
  • 西安建网站线上营销渠道主要有哪些
  • 公司变更法人的流程安卓优化清理大师
  • 企业网站建设457百度最怕哪个部门去投诉
  • 网站开发 视频存储线上线下推广方案
  • 深圳在线官网友链对网站seo有帮助吗
  • 商业网站的后缀一般为如何快速推广网上国网
  • 网站建设不包括以下哪个阶段seo测试工具
  • 网站服务合同用交印花税吗网络营销与传统营销的整合
  • 网站制作网站建设运营团队/抖音推广引流
  • 重庆所有做网站的公司有哪些/衡阳网站优化公司
  • 微软雅黑做网站/哪家培训机构学校好
  • 四川微信网站建设/百度广告代理公司
  • 西双版纳网站开发/学seo如何入门
  • ps做网站横幅/大数据营销案例
  • 专业网站建设企业网站制作/毕节地seo
  • win10系统做mac系统下载网站/北京网站优化页面
  • 金塔凯元建设集团有限公司官方网站/华为云速建站
  • 网站如何收录/一键优化大师下载
  • 重庆企业网站的推广/seozou是什么意思
  • 做手表网站用什么源码比较好/郑州网站建设哪家好
  • 专门做ppt会员网站/兰州网络优化seo
  • 如何做计算机网站/seo站长之家
  • 做简单网站需要学什么/关键词优化公司
  • 一般网站开发语言/郑州网络推广服务