android-区分handlers和runOnUiThread

问题描述

区分handlers和runOnUiThread

handlers和runOnUiThread最主要的区别是什么?我已经研究过它们的使用说明,但是不知道它们最主要的区别是什么

他们都可以用在后台线程执行UI动作,怎么选择?

比如现在有一个在后头作为web服务器的可运行线程,我想更新它的界面。应该用Handler还是runOnUiThread?

解决方案

Activity.runOnUiThread() 是 Handlers 的特殊情况。使用 Handlers 可以在自己的线程里创建事件查询。默认情况下,使用handler不是“代码在UI线程中运行”,handlers会绑定到其实例化的线程上。想要创建直接绑定到UI线程的handlers,需要一个looper,代码如下:

Handler mHandler= new Handler(Looper.getMainLooper());

如果使用 runOnuiThread ,需要用到handler:

public final void runOnUiThread(Runnable action) {
    if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
 }
 }
时间: 2024-09-02 07:26:28

android-区分handlers和runOnUiThread的相关文章

《Android UI基础教程》——2.6节 防止应用程序无响应(ANR)

2.6 防止应用程序无响应(ANR) Android UI基础教程 一个Android应用程序运行在它自身的进程之上,是与其他应用无关的沙盒应用.应用被单个线程操控:主线程,或者叫做UI线程.要让应用能够快速响应,Android限制了函数调用的时间.如果函数超过了它的时间限制,则会出现一个应用程序没有响应(ANR)的对话框,提示用户选择继续等待或者强制关闭应用.你应该不惜任何代价避免ANR的出现.当你在主线程上执行长时间的操作时ANR会出现,例子包括网络I/O.磁盘I/O.数据库查询以及密集的C

Android官方数据绑定框架DataBinding

转自:http://blog.csdn.net/qibin0506/article/details/47393725 今天来了解一下android最新给我们带来的数据绑定框架--Data Binding Library.数据绑定框架给我们带来了更大的方便性,以前我们可能需要在Activity里写很多的findViewById,烦人的代码也增加了我们代码的耦合性,现在我们马上就可以抛弃那么多的findViewById.说到这里,有人可能会有个疑问:我使用一些注解框架也可以不用findViewByI

我的Android进阶之旅------> Android应用升级构想和要点总结

 广大博友,看过后帮忙顶顶,谢谢大家!!!  转载请注明: http://blog.csdn.net/richway2010/article/details/6408258 [博主:各位博友,网友们,大家网上好!欢迎光临本博客. 欢迎多多交流,多提意见,互相学习,互相进步,我们的口号是:好好学习,天天向上.] 下面就如何对Android 手机上的应用进行升级相关知识的讲解: 一.原理及要点概述: 手机软件一般在运行时会把服务端的版本信息和当前手机中的版本进行比较.从而得知需不需要更新.Andro

苹果设计的用户界面和微软的分歧

苹果电脑新用户或iPad用户对Lion系统功能设置的理解与使用过Macs的老用户相比会有何不同呢?本专栏就微软目前正向Windows 8过渡进行过讨论,其情况与苹果类似.OS X Lion和Windows 8都力图混合平板电脑用户界面和桌面用户界面的元素,或者说,它们都力图将触摸界面和鼠标操作界面结合起来.如果苹果和微软能够舞动魔杖,让所有应用一夜之间采用新界面,它们准会都把键盘和鼠标抛在脑后.不过既然它们没有这种魔力,那么两者不一致的情况就会屡见不鲜. 但是,尽管Lion系统所展示的OS X-

android Activity runOnUiThread() 方法使用

在android 中我们一般用 Handler 做主线程 和 子线程 之间的通信 . 现在有了一种更为简洁的写法,就是 Activity 里面的 runOnUiThread( Runnable )方法.   利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable).  Runnable对像就能在ui程序中被调用.如果当前线程是U

在Android打包中区分测试和正式环境浅析

前言 本文主要介绍了关于Android打包中区分测试和正式环境的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: APK打包正式环境和测试环境注意 最近在项目打包中,遇到一个问题,每次打包都要区分正式发布包和测试版本的包,主要是修改一下配置 public static final boolean EXTERNAL_RELEASE = true; 当变量为true的时候,就是正式包,反之就是测试包.每次上线的时候我就提醒自己要小心,千万不能出错了,然而终于湿脚了,一个渠道打

Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分

如果开发的应用用户较多,那么必须保证应用在多个版本不同的设备上能够正确的运行.这就要求对各个版本比较熟悉,知道在什么版本中加入了什么新的功能或特性.但是Android的版本太多了,是个令人头疼的问题.如果想了解Android的版本差异,建议读一下Android开发者文档上相关的章节. 为了让你的应用程序指定可以运行的版本,Android的manifest文件中提供了<uses-sdk>标签.该标签中有三个属性,分别是minSdkVersion,targetSdkVersion,maxSdkVe

使用shell区分Android软硬重启问题

uptime命令: - * 使用uptime命令获取主机运行时间和查询linux系统负载信息.信息显示依次为:现在时间.系统已运行时间.目前有多少登陆用户.系统在过去的1分钟.5分钟和15分钟内的平均负载.* ubuntu@ubuntu:~$ uptime 17:42:05 up 3 days, 7:58, 6 users, load average: 0.11, 0.10, 0.11 17:42:05 //系统当前时间 up 3 days, 7:58 //主机已运行时间,时间越大,说明主机越稳

android wifi信号强度等级区分的修改介绍_Android

/frameworks/base/wifi/java/android/net/wifi/wifimanager.java calculateSignalLevel为计算信号等级函数,MAX_RSSI和MIN_RSSI分别为最强和最弱信号强度等级的信号强度阀值.