全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Android UI更新的几种方法

前言

在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小时内与您取得联系。