前言

在android开发中,界面UI的更新都是在主线程来完成的。线程分为主线程(Main Thread,简称MT)和工作线程(Work Thread,简称WT),我们通常会在WT中执行一些比较耗时的操作,比如下载,网络,缓存等,然后在将结果发送给MT进行UI的更新操作。如果是在WT进行UI的更新,则会抛出异常,android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.(只有创建这个View的原始线程才能修改这个view)。
在BT搜索、WIFI搜索、其他需要更新View的UI过程中,很多是采用广播的方式通知搜索的结果,实时的显示到listview中进行UI的更新操作。通常会使用以下几种方式进行UI的更新:handler,runOnUiThread,子线程发送Message。
一、Activity.runOnUiThread
利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新 ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。这样Runnable对像就能在ui程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(TAG, "开始添加设备!");
addDevice(device);
}
});
二、handler.post(Runnable)
handler.post(new Runnable() {
@Override
public void run() {
addDevice(device);
}
});
三、子线程发送Message
首先在需要执行更新的位置添加以下代码
new Thread(new Runnable() {
@Override
public void run() {
//Message msg = new Message();
//msg.what = 0x06;
//handler.sendMessage(msg);
handler.sendEmptyMessage(0x06);
}
}).start();
然后进入handler下进行处理
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x06:
addDevice(device);
break;
default:
break;
}
super.handleMessage(msg);
}
};
以上三种方法都可以实现UI的更新,掌握哪种方式取决于代码中的叠加度,不过个人推荐使用方法一。希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# UI更新
# UI更新方法
# Android 在其他线程中更新UI线程的解决方法
# android使用多线程更新ui示例分享
# Android异步更新UI的四种方式
# Android更新UI的四种方法详解
# Android 更新UI的方法汇总
# Android UI更新的几种方法总结
# 详解android进行异步更新UI的四种方式
# 是在
# 推荐使用
# 会在
# 能在
# 三种
# 几种
# 可以实现
# 哪种
# 来完成
# 则会
# 抛出
# 大家多多
# 通常会
# 过程中
# 发送给
# View
# br
# touch
# views
# hierarchy
相关文章:
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
XML的“混合内容”是什么 怎么用DTD或XSD定义
c# await 一个已经完成的Task会发生什么
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何选择高效稳定的ISP建站解决方案?
简单实现Android文件上传
学校建站服务器如何选型才能满足性能需求?
Bpmn 2.0的XML文件怎么画流程图
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
网站制作员失业,怎样查看自己网站的注册者?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
济南网站制作的价格,历城一职专官方网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
如何在Ubuntu系统下快速搭建WordPress个人网站?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
建站之星免费模板:自助建站系统与智能响应式一键生成
javascript基本数据类型及类型检测常用方法小结
制作网站公司那家好,网络公司是做什么的?
如何在阿里云域名上完成建站全流程?
建站VPS能否同时实现高效与安全翻墙?
创业网站制作流程,创业网站可靠吗?
如何在IIS管理器中快速创建并配置网站?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
购物网站制作公司有哪些,哪个购物网站比较好?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
简历在线制作网站免费版,如何创建个人简历?
如何零成本快速生成个人自助网站?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何做静态网页,sublimetext3.0制作静态网页?
移民网站制作流程,怎么看加拿大移民官网?
建站之星价格显示格式升级,你的预算足够吗?
如何设置并定期更换建站之星安全管理员密码?
IOS倒计时设置UIButton标题title的抖动问题
建站主机选购指南:核心配置与性价比推荐解析
建站之星3.0如何解决常见操作问题?
中山网站制作网页,中山新生登记系统登记流程?
建站之星免费版是否永久可用?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
宿州网站制作公司兴策,安徽省低保查询网站?
手机网站制作与建设方案,手机网站如何建设?
定制建站方案优化指南:企业官网开发与建站费用解析
如何实现建站之星域名转发设置?
如何用虚拟主机快速搭建网站?详细步骤解析
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
如何用免费手机建站系统零基础打造专业网站?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
,柠檬视频怎样兑换vip?
*请认真填写需求信息,我们会在24小时内与您取得联系。