Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。Android利用Handler来实现UI线程的更新的。
Handler是Android中的消息发送器,其在哪个Activity中创建就属于且紧紧属于该Activity。还可以说其在哪个线程中new的,就是那个线程的Handler。
Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.
解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死现象,如果5秒钟还没有完成的话,会收到Android系统的一个错误提示
"强制关闭".这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,也就是说,更新UI只能在主线程中更新,子线程中操作是危险的. 这个时候,Handler就出现了.来解决这个复杂的问题,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据),把这些消息放入主线程队列中,配合主线程进行更新UI。
以上解释原地址:http://txlong-onz.iteye.com/blog/934957
代码原创:
main.xml
dialogview.xml
Acitvity
分享到:
相关推荐
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面。
ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面
Looper和Handler实现UI线程和子线程的通信
本文实例讲述了Android编程实现使用handler在子线程中更新UI。分享给大家供大家参考,具体如下: MainActivity代码: package com.example.ui; import android.os.Handler; import android.os.Message; import ...
简单实现更新UI的操作,仅供学习参考 这里用到handler类,runnable类,按钮的点击事件
新线程中发送Handle消息,主线程中处理消息并更新TextView的值
当你连接Handler到UI线程时,处理消息的代码会在UI线程上运行. 在创建线程池的类的构造器里实例化Handler对象,保存在全局变量里。用Handler(Looper)方法实例化,连接到UI线程,构造方法使用Looper对象,也是Android...
本文首先解释一下handler是用来干嘛的,然后通过例子...当thread处理完一些耗时的操作后通过传递过来的handler像ui线程发送数据,由UI线程去更新界面。 handler应用多线程例子 我们这个例子是实现一个简单的词典功能。
主要介绍了android使用handler ui线程和子线程通讯更新ui的方法,大家参考使用吧
三种更新主线程的方法;handler的两种
Demo-实例讲解线程池里面的UI如何刷新,处理两个开发者头疼的问题: 1. 数据经常需要读取更新,并且比较耗时,需要分步刷新UI. 2. UI界面切换后,如何停止掉子线程里面正在读取的数据而不会将旧数据刷新到新UI界面上...
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关...所以主线程通常又被叫做UI线程。
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
首先明确Android之所以有Handler和AsyncTask 都是为了不阻塞主线程(UI线程) 且UI的更新只能在主线程中完成 因此异步处理是不可避免的 Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的...
demo01: 通过handler.post()的方法可以更新ui demo02: 一秒钟切换一张图片 demo03: 霓虹灯动态效果的显示 demo04: 倒计时,停止倒计时 demo05: 通过handler.sendMessage和handleMessage发送处理消息 demo06: message...
Android中子线程和UI线程之间通信的详细解释 1.在多线程编程这块,我们经常要使用Handler,Thread和...而Handler是运行在主UI线程中的,它与子线程可以通过Message对象来传递数据。 (2).使用: A:Handler是运行在U
讲解Android线程和UI更新,通过handler进行主线程UI的更新。
而Handler永远都是在UI主线程,这就意味着对一个控件的修改永远只会有一个线程,不会存在多个线程同时修改一个控件。二是方便统一管理,通过Handler可以统一进行对UI的管理,因为Handler采用消息处理的机制。就是另...
快乐排球 在非UI线程返回Response且可以配置并发线程数的Volley 提供取消取消请求的封装 采用MVP标准架构构建演示 前言 ...当结果返回到业务层的时候再通知GUI更新即可(Handler EventBus等随意了)