`

Mars视频笔记——Handler2

阅读更多

Handler主要用于异步消息的处理,发送消息与处理消息不是同时进行,用于处理相对耗时较长的操作

 

Handler在默认情况下 与调用它的Activity是处于同一线程的

post()方法其实相当于直接执行了线程的run方法 而不是调用Thread.start()

因此其实2者还是处于同一线程

 

可以通过Thread.currentThread().getId()来验证

 

当用标准Java实现线程(通过一个Runnable对象创建Thread)

2者是处于不同的线程(同样可通过getId验证)

 

关于Bundle对象(以String为键 其他数据类型为值的Map 和HashMap类似)

特殊的Map(键值类型固定 而非Object)

 

Android中另开线程

Looper 一般不用自己实现

HandlerThread类 实现了循环处理消息的功能

 

步骤

new一个HandlerThread对象

调用HandlerThread对象的start方法

创建MyHandler对象(继承Handler类),使用Looper对象(handlerThread.getLooper())

创建Message对象msg(myHandler.obtainMessage方法获得)

调用msg.sendToTarget();(发送到生成msg对象的Handler)

 

在msg上绑定数据 有msg.arg1 arg2 也可以msg.object这些传递简单数据

当传递比较大的数据时 就用msg.setData(Bundle data)方法

Bundle b=new Bundle();

b.putXXX来存值

在handleMesage方法中,用getData取得Bundle对象

再通过getXXX方法取得相应的值

 

注意 在调用getLooper方法前 必须先启动HandlerThread.start方法 否则取不到Looper对象

分享到:
评论

相关推荐

    安卓Android源码——HandlerLooper2.rar

    这个压缩包“安卓Android源码——HandlerLooper2.rar”可能包含了关于这些组件的深入分析和示例代码。以下是关于`Handler`、`Looper`和`MessageQueue`的详细解释: 1. **Handler**: - `Handler`是Android中的一个...

    安卓Android源码——HandlerMessage2.rar

    本资源"安卓Android源码——HandlerMessage2.rar"可能包含了关于`Handler`和`Message`的深入实践和示例代码,下面我们将详细探讨这些核心组件。 `Handler` 是 Android 中用于在线程间传递消息的对象。它通常用于将...

    安卓Android源码——HandlerMessage3.rar

    这个压缩包"安卓Android源码——HandlerMessage3.rar"很可能包含了关于这三者如何协同工作的示例代码或者详细分析。现在,我们将深入探讨这些概念及其在Android系统中的作用。 `Handler` 是一个用于发送和处理消息...

    AsnyncTask与handler(二)——handler消息机制 ---源码

    博客《AsnyncTask与handler(二)——handler消息机制》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/24783459

    安卓Android源码——HandlerLooper1.rar

    在Android系统中,`Handler`、`Looper`和`MessageQueue`是三个核心组件,它们共同构成了Android消息处理机制,使得应用程序能够实现线程间的通信和异步任务执行。这个`HandlerLooper1.rar`文件可能包含了对这些概念...

    android mars视频代码 Handler 源码 ProgressBarHandler

    www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 Handler ProgressBarHandler(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    安卓Android源码——HandlerMessage1.rar

    2. **post() 和 sendMessage()**:这两个方法是向 `Handler` 发送 `Message` 的常用方式,区别在于 `post()` 可以直接传递一个 `Runnable` 对象,而 `sendMessage()` 需要创建 `Message`。 3. **handleMessage()**:...

    安卓笔记——安卓详细笔记汇总

    这份名为“安卓笔记——安卓详细笔记汇总”的资源,无疑是安卓开发者或者学习者的重要参考资料。以下将对这个压缩包中可能包含的知识点进行深入解析。 首先,Android系统是基于Linux内核的开源操作系统,广泛应用于...

    android mars视频代码 Handler 源码 HandlerTest2

    www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 Handler HandlerTest2(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    ns2初学笔记——非常经典

    【NS2初学笔记——非常经典】 NS2(Network Simulator 2)是一个广泛使用的网络模拟器,主要用于研究和分析网络协议、性能和行为。对于初学者来说,掌握NS2的基本概念和思想至关重要。以下是根据标题和描述提炼出的...

    android mars视频代码 Handler 源码 HandlerTest

    www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 Handler HandlerTest(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    Android开发笔记——模拟器、应用教程 pdf

    总之,这份"Android开发笔记——模拟器、应用教程"将引导你全面了解Android开发的核心技术和实践方法,无论你是初学者还是经验丰富的开发者,都可以从中受益。通过学习和掌握这些知识点,你将能够创建出高质量、适应...

    ASP.NET源码——利用handler生成静态页面的完整解决方案.zip

    在这个"ASP.NET源码——利用handler生成静态页面的完整解决方案.zip"压缩包中,我们可以看到一个利用ASP.NET Handler(HttpHandler)来生成静态HTML页面的实践案例。 Handler在ASP.NET中扮演着处理特定HTTP请求的...

    Mars老师视频源代码

    《Mars老师视频源代码详解——深入Android编程实践》 Mars老师的视频源代码是一份宝贵的教育资源,专注于Android平台的开发。这份源代码是Mars老师在教学过程中使用的实例,旨在帮助学习者深入理解Android应用的...

    android mars视频代码 wifi 源码

    6. **UI交互**:在视频教程中,Mars老师可能会演示如何将WiFi功能与用户界面结合,例如,创建一个列表显示扫描到的网络,用户可以选择并连接。这涉及到`ListView`、`Adapter`等组件的使用。 7. **异步处理**:考虑...

    mars视频教程源码全集

    【火星(Mars)视频教程源码全集】是一份专为学习者设计的资源,旨在帮助他们深入了解和掌握Android应用开发的相关技能。这个压缩包包含了一系列与Android应用开发相关的项目源码,覆盖了多个关键知识点,对于想要...

    【RBAC】基于springboot+shiro实现RBAC权限后台管理系统.zip

    |—— |—— handler —— 异常捕获统一处理 |—— |—— result —— json返回结果 |—— |—— util —— 工具类 |—— model |—— |—— base —— pojo的父类 |—— |—— dao —— 持久层 |—— |—— domain ...

    xamarin学习笔记A13(安卓Handler异步消息处理)

    本篇笔记主要聚焦于Xamarin中的Android Handler异步消息处理机制,这是Android UI线程与后台工作线程之间通信的关键技术。 一、Android线程模型 Android系统规定,所有的UI操作必须在主线程(也称为UI线程)中进行...

Global site tag (gtag.js) - Google Analytics