looper prepareandroid消息处理机制的问题 高手来解析一下

looper prepare  时间:2022-02-24  阅读:()

handler使用在哪些场景

一、 应用场景一 1. 说明 某些不需要实时显示的,可以先放到消息队列中(例如弹出提示信息,更新UI等) 2. 示例代码 [java] view plain copy print? // handler类接收数据 Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == MOBILE_STATUS || msg.what == WIFI_STATUS) { showNetMethod(msg.what); System.out.println("receive...."); } }; }; Message msg = new Message(); msg.what = WIFI_STATUS; handler.sendMessage(msg); // handler类接收数据 Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == MOBILE_STATUS || msg.what == WIFI_STATUS) { showNetMethod(msg.what); System.out.println("receive...."); } }; }; Message msg = new Message(); msg.what = WIFI_STATUS; handler.sendMessage(msg); 二、 应用场景二 1. 说明 在一个子线程中去创建一个Handler,然后使用这个handler实例在任何其他线程中发送消息,最终处理消息的代码都会在你创建Handler实例的线程中运行 2. 代码示例 [java] view plain copy print? new Thread() { private Handler handler; public void run() { Looper.prepare(); handler = new Handler() { public void handleMessage(android.os.Message msg) { Log.e("TAG",Thread.currentThread().getName()); }; }; Looper.loop(); } } new Thread() { private Handler handler; public void run() { Looper.prepare(); handler = new Handler() { public void handleMessage(android.os.Message msg) { Log.e("TAG",Thread.currentThread().getName()); }; }; Looper.loop(); } } 三、应用场景三 1. 说明: 定时器 2. 示例代码 [java] view plain copy print? private static final int LOAD_DISPLAY_TIME = 3000; // 延迟3s new Handler().postDelayed(new Runnable() { public void run() { // 时间到时,执行的代码 } }, LOAD_DISPLAY_TIME); 关闭此定时器:handler.removeCallbacks(runnable);

android消息处理机制的问题 高手来解析一下

下面和大家分享一下android中非常重要的消息处理机制,说到消息处理,Message,MessageQueue,Looper,Handler这四个类的作用是我们必须要明白的。 下面分别谈谈他们的作用: MessageQueue MessageQueue表示消息队列,存放消息的地方,按照“先进先出”的规则执行,每一个线程只可以拥有一个MessageQueue。当创建Looper对象的时候会创建一个MessageQueue对象。 Message Message表示消息对象,MessageQueue中存放的对象,一个MessageQueue中可以存放多个Message对象。通过调用Message类的obtain()方法或者调用Handler类的obtainMessage()方法获取Message对象,但是这样并不一定会创建一个新的Message对象,如果消息池中有可用的Message对象则直接取出返回这个对象,否则如果消息池中没有可用的Message对象,则会创建一个新的Message对象。当消息队列中的Message对象被系统处理完之后,该Message对象会从MessageQueue中删除,然后放入消息池中。 Looper Looper是用来操作MessageQueue的,每一个Looper对应一个MessageQueue,可以通过调用Looper.myLooper()方法获取当前线程的Looper对象,Looper循环从MessageQueue中取出Message对象,交给Handler调用handleMessage方法进行处理,处理完之后Message对象被放入消息池中。 Handler Handler是消息的处理者,Handler将需要传递的信息封装成Message对象,然后调用sendMessage方法将Message放入MessageQueue中,当MessageQueue循环到该Message时,调用相应Handler对象的handleMessage方法对其进行处理。 /developer/

注意在UI线程也就是主线程中默认会创建Looper对象和MessageQueue对象,如果在我们自己新开的线程中要进行消息处理,必须创建Looper对象和MessageQueue对象,通过调用Looper.prepare()方法可以创建Looper对象和MessageQueue对象,调用Looper.loop()方法可以启动消息循环队列。 这里 /developer/thread-25343-1-1.html还有个例子,你可以参照一下,求给分啊!!!

旅途云(¥48 / 月),雅安高防4核4G、洛阳BGP 2核2G

公司成立于2007年,是国内领先的互联网业务平台服务提供商。公司专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前,旅途云公司研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务,拥有丰富的国内BGP、双线高防、香港等优质的IDC资源。点击进入:旅途云官方网商家LOGO优惠方案:CPU内存硬盘带宽/流量/防御...

10gbiz首月半价月付2.36美元,香港/洛杉矶VPS、硅谷独立服务器/站群服务器

收到10gbiz发来的7月份优惠方案,中国香港、美国洛杉矶机房VPS主机4折优惠码,优惠后洛杉矶VPS月付2.36美元起,香港VPS月付2.75美元起。这是一家2020年成立的主机商,提供的产品包括独立服务器租用和VPS主机等,数据中心在美国洛杉矶、圣何塞和中国香港。商家VPS主机基于KVM架构,支持使用PayPal或者支付宝付款。洛杉矶VPS架构CPU内存硬盘带宽系统价格单核512MB10GB1...

UCloud云服务器香港临时补货,(Intel)CN2 GIA优化线路,上车绝佳时机

至今为止介绍了很多UCLOUD云服务器的促销活动,UCLOUD业者以前看不到我们的个人用户,即使有促销活动,续费也很少。现在新用户的折扣力很大,包括旧用户在内也有一部分折扣。结果,我们的用户是他们的生存动力。没有共享他们的信息的理由是比较受欢迎的香港云服务器CN2GIA线路产品缺货。这不是刚才看到邮件注意和刘先生的通知,而是补充UCLOUD香港云服务器、INTELCPU配置的服务器。如果我们需要他...

looper prepare为你推荐
flash控件一台电脑要装哪几个flash插件fcloseC语言fclose错误查字网“很”去掉双人旁读什么?查字网衾字怎么读音是什么网关和路由器的区别网关和路由器的区别是什么spawning为什么编译和运行vc++ 时会出现Error spawning c1.exe 的错误radius认证电信或网通的RADIUS认证都记录些什么?谁能说说ISP的宽带帐号检查流程memsql如何自己实现一个关系型数据库清除电脑垃圾怎样清除电脑垃圾cf加速器玩CF需要用加速器吗?
域名升级访问中 免费申请域名和空间 hostmonster 全球付 腾讯云数据库 56折 空间打开慢 ubuntu更新源 论坛空间 网站挂马检测工具 空间出租 河南m值兑换 1美金 万网空间购买 多线空间 in域名 免费私人服务器 跟踪路由命令 移动服务器托管 主机管理系统 更多