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

网站制作程序我要啦免费统计怎么做网站

网站制作程序,我要啦免费统计怎么做网站,网站SEO的评价,手机做无水印短视频网站Looper分析 在 Handler 机制中,Looper 的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。 Looper 是一个线程局部的对象,每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息&#x…

Looper分析

在 Handler 机制中,Looper 的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。

Looper 是一个线程局部的对象,每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息,并将消息分发给对应的 Handler 进行处理。

在使用 Handler 机制时,我们可以通过调用 Looper.prepare() 方法来创建一个Looper对象,并通过 Looper.loop() 方法来启动消息循环。在消息循环开始后,Looper会不断地从消息队列中取出消息,然后将消息分发给对应的 Handler 进行处理。

Handler 可以通过调用 post()sendMessage() 等方法将消息发送到消息队列中,然后由 Looper 负责将这些消息取出并分发给对应的 Handler 进行处理。这样就实现了线程间的消息传递和处理。

Looper还可以通过调用 quit() 方法来终止消息循环,停止消息的处理。

下来以主线程内的 Looper 分析下。

Looper 创建/运行

App 运行,进程创建后主线程开始运行的入口在 ActivityThreadmain(String[] args) 方法。

// ActivityThread.java  sdk30public static void main(String[] args) {// ...... 一系列的初始化操作。// 创建主线程的 Looper 并设置到 ThreadLocal,同时创建了绑定的 MessageQueue。Looper.prepareMainLooper(); // ......ActivityThread thread = new ActivityThread(); // 主线程对象创建thread.attach(false, startSeq);if (sMainThreadHandler == null) { // 主线程处理各事件的 HandlersMainThreadHandler = thread.getHandler();}// ......Looper.loop();  // Looper 开始无限循环,从 MessageQueue 中取消息,也同时保证了主线程的存活。throw new RuntimeException("Main thread loop unexpectedly exited");
}

上面代码中 Looper 的创建与运行就两行。

  1. Looper.prepareMainLooper(); 方法的调用,创建了 **主线程 ** 的 Looper 对象,并将它设置到了 sThreadLocal 中。

    // Looper.java sdk30private static void prepare(boolean quitAllowed) {if (sThreadLocal.get() != null) {throw new RuntimeException("Only one Looper may be created per thread");}sThreadLocal.set(new Looper(quitAllowed));
    }@Deprecated
    public static void prepareMainLooper() {prepare(false);synchronized (Looper.class) {if (sMainLooper != null) {throw new IllegalStateException("The main Looper has already been prepared.");}sMainLooper = myLooper();}
    }
    

    上面代码保证了一个线程只能有一个 Looper 对象:

    • if (sThreadLocal.get() != null) 判断表明 sThreadLocal 内对应于主线程的 Looper 对象只能存在一个。若主线程运行起来时发现已经有存在的 Looper 对象,将抛出异常,也就表明 app 进程直接crash。
    • prepareMainLooper() 被标注了 @DeprecatedLooperpublic 类,在 app 程序中是可以调用 Looper.prepareMainLooper() 方法的。换言之,在 sThreadLocal 中已经存在 Looper 对象的情况下,,可以再次调用方法 Looper.prepareMainLooper(),因此在 prepare(boolean quitAllowed) 一开始就先判断是否存在了 Looper 对象。进一步表明,一个线程中只能有一个 Looper
    • 赋值 sMainLooper

    这样主线程的 Looper 就创建完成了。

  2. Looper.loop(); 开启了 Looper 的无限循环,从 MessageQueue 中取消息,附带同时保证了主线程的存活。还负责将 msg 分发给对应的 Handler 执行。

在这里插入图片描述

http://www.yayakq.cn/news/564646/

相关文章:

  • 怎么找合适的网站开发淘宝可以到哪些网站做推广
  • 成都专业网站推广公司百度商家平台登录
  • 怎么建设收费网站一整套vi设计
  • 全国招聘网站排名域名申请哪家好
  • 铜陵网站建设哪家好wordpress网站建设要钱吗
  • 网站设计规划的一般流程敦化网站开发
  • 福建住房与城乡建设部网站龙岗模板网站建设
  • 怎么找企业做网站做网站商城需要什么条件
  • 婚庆公司网站设计开发工具宏怎么使用
  • 企业手机网站建设资讯网站被攻击空间关了怎么办
  • 小橘子被做h网站企业安全文化建设程序
  • 网站开发7个基本流程图付费网站 源码 下载链接
  • 怎么做网站后期维护微商的货源都从哪来
  • 做点击率的网站山西自助建站系统怎么用
  • 通化 网站建设ip库网站源码
  • 大连网站制作-中国互联河南纯手工seo
  • 网站区域名怎么注册吗广告网站留电话不用验证码
  • 专业建材网站建设甘肃网站设计公司
  • 网站建设与管理期末试卷公司logo设计免费生成图片
  • 做网站虚拟主机推荐wordpress 外框
  • 建筑外观设计网站推荐网站后台页面模板下载
  • 公司营销网站怎么做免费发布推广信息的平台有哪些
  • 嘉兴手机模板建站上海建站网络科技有限公司
  • 免费网站建设工具网站自动识别手机
  • 微信分销网站建设价格静态网站的好处就是安全性好从而
  • 泉州网站的建设购物商城有哪些
  • 沈阳正规制作网站公司网络公关公司联系方式
  • 上海做网站 公司有哪些用户体验网站
  • 网站建设内容大全wordpress 一键部署
  • 网站建设同步视频网站建好了 怎么建后台