位置: 编程技术 - 正文

[置顶] android UI(内容)更新的方法之handler、runOnUiThread()([置顶]游戏名:chivalry2)

编辑:rootadmin

推荐整理分享[置顶] android UI(内容)更新的方法之handler、runOnUiThread()([置顶]游戏名:chivalry2),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]游戏名 TentacleLocker,[置顶]从lv2开始开挂的原勇者候悠闲的异世界生活,[置顶]津鱼.我爱你,[置顶]游戏名 TentacleLocker,[置顶]从lv2开始开挂的原勇者候悠闲的异世界生活,[置顶]从lv2开始开挂的原勇者候悠闲的异世界生活,[置顶]JM259194,[置顶]JM259194,内容如对您有帮助,希望把文章链接给更多的朋友!

摘要:在android应用程序开发中,特别是在使用多线程开发程序时,经常会需要在其他线程完成某些工作后更新UI。而众所周知,更新UI的功能必须放在UI主线程中进行,否则运行的时候回出错:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.它的意思是说只有创建此视图层的线程才能更新此视图,所以在主线程中创建的其它线程是不能更新UI的。

更新UI 内容的方法。

1、通过handler消息机制。

在UI主线程中创建一个Handler类的实例,并在其实现的handeMessage()接口中实现对UI的更新。其他的线程需要更新UI时,通过Handler机制给主UI线程中的发消息,

实现UI的更新。

如:

[置顶]
        android UI(内容)更新的方法之handler、runOnUiThread()([置顶]游戏名:chivalry2)

public class MainActivity extends Activity { private EditText UITxt; private Button updateUIBtn; private UIHandler UIhandler; //主线程中的handler对象 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UITxt = (EditText)findViewById(R.id.ui_txt); updateUIBtn = (Button)findViewById(R.id.update_ui_btn); updateUIBtn.setOnClickListener(newView.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub UIhandler = newUIHandler(); UIThread thread = newUIThread(); //创建子线程 thread.start(); } }); }private class UIHandler extends Handler{ @Override public void handleMessage(Message msg) { //重写此函数,实现对UI的更新。 // TODO Auto-generated method stub super.handleMessage(msg); Bundle bundle = msg.getData(); String color = bundle.getString("color"); UITxt.setText(color); } } private class UIThread extends Thread{ //子线程 @Override public void run() { try{ Thread.sleep(); }catch(InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Message msg = newMessage(); Bundle bundle = newBundle(); bundle.putString("color","黄色"); msg.setData(bundle); MainActivity.this.UIhandler.sendMessage(msg); } } 2、利用Activity.runOnUiThread(Runnable)

在其他线程中调用runOnUIThread()方法,将创建一个Runnable对象,更新UI的工作就放在此对象的run函数中。让我们来看看runOnUIThread()方法的实现:

public final void runOnUiThread(Runnable action) { if (Thread.currentThread() != mUiThread) { mHandler.post(action); } else { action.run(); } }

从上面可以看出,当子线程调用此方法时,实际上是将创建的Runnable对象通过Handler方式传给了主线程。这样新建的Runnable就运行在UI主线程中,实现UI的更新。

例如,在开发webRTC的时候,当收到对方加入房间的消息后,这是需要更新客户端的UI显示。

public void onConnectedToRoom(final SignalingParameters params) { runOnUiThread(new Runnable() { @Override public void run() { onConnectedToRoomInternal(params); roomNameView.setText(params.roomId);

}

}

Android系统上的键盘监控 键盘监控键盘监控,顾名思义是在应用软件在运行时,用户在设备上的一举一动都将被详细记录下来,更多的实在使用者毫无觉察的情况下将屏幕内容

Android中 view的双缓冲技术 view实现双缓冲技术当要绘制的数据量比较大,绘图时间比较长时,重复绘图会出现闪烁现象,引起闪烁现象的主要原因是视觉反差比较大。使用双缓冲

Android摄像头照相机技术-android学习之旅(八) 简介AndroidSDK支持Android设备内置的照相机。从Android2.3开始支持多个摄像头(主要指前置摄像头和后置摄像头)。通过照片相可以拍照和录像。需要考虑

标签: [置顶]游戏名:chivalry2

本文链接地址:https://www.jiuchutong.com/biancheng/376588.html 转载请保留说明!

上一篇:Android系统Root与静默安装(安卓手机root后更流畅吗)

下一篇:Android系统上的键盘监控(android系统介绍)

  • 电梯安装费发票
  • 纳税申报的基本内容有哪些
  • 土地增值税暂行条例实施细则 税屋
  • 计提城市维护建设费和教育费附加的会计分录
  • 捐赠支出需要什么手续
  • 民办非企业业务主管单位职责
  • 利润表中的管理费用和研发费用怎么填
  • 一般纳税人销售旧货
  • 增值税一般纳税人税率是多少?
  • 企业缴纳的财产保险费会计分录
  • 资金账号和交易账号一样吗
  • 银行开户时存入的现金怎么做账
  • 公司业务往来
  • 企业会主动对税吗
  • 增值税负数如何计算
  • 2020年购进农产品的扣除率
  • 免税品销售有增值税吗
  • 2020年小规模生活服务业优惠政策
  • 2020年职工福利费扣除比例
  • 公司从事房地产有什么好名字
  • 无偿划转房产能否入递延收益
  • 发票勾选保存后不提交了能留到下月抵扣吗?
  • 摊销费用多做如何做账?
  • 个人给单位垫付的款怎么做账
  • 如何刷新手机
  • linux 卸载vmware
  • 挑主板要注意什么
  • 未开票收入缴纳增值税怎么冲减补开发票
  • php字符串函数有哪些
  • 老板垫付的员工怎么入账
  • 逾期未收回包装物押金增值税怎么算
  • 为庆祝中秋而摆放的东西
  • 机动车发票金额含税吗
  • 一般纳税人取得普票会计分录
  • 以物易物双方做什么处理
  • 建信融通e信通贴现几天到账
  • php7.3
  • 土地出让金返还比例是多少
  • 运行vue项目的快捷键
  • opencv图像识别特定形状
  • hashmap resize源码
  • 残保金工资总额包括什么
  • 畜牧业科技公司
  • 经营租赁会计的核算原则
  • 发票领购簿用完了怎么领取
  • 政府对企业提交的项目申请报告主要从等方面进行核准
  • 累计折旧的账务处理
  • 劳务费发票入账科目
  • 增值税一般纳税人登记管理办法
  • 社保怎么进行账户转移
  • 无形资产按取得时的什么入账
  • 路桥费能抵扣增值税吗
  • 企业用实物资产出资 增值税
  • 储备基金是什么
  • 委托付款做账怎么做
  • 当月发票未到怎么做账
  • 计税价格里含税吗
  • mysql的安全级别
  • mysql8.0.23
  • mysqldumpslow
  • window怎么操作
  • centos 远程管理
  • cygwin在Windows8.1中设置ssh无密码登录
  • linux的io
  • xp死机不动
  • igfxem是什么软件
  • win7系统本地连接图标不见了
  • win8系统关机在哪
  • win8系统安装教程图解
  • opengl缓冲区
  • jquery 选中
  • 删除命令del
  • javascript 基础
  • javascript toggle
  • jquery调用iframe中的方法
  • Android之Service
  • Java之CyclicBarrier使用
  • 江苏专家库申报在哪个网站
  • 2006年发生哪一些大案
  • 长安cs752016款2.0手动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设