文档章节

runOnUiThread更新主线程

 等待流星
发布于 2014/03/18 17:18
字数 247
阅读 122
收藏 2

更新UI采用Handle+Thread,需要发送消息,接受处理消息(在回调方法中处理),比较繁琐。除此之外,还可以使用runOnUiThread方法。

利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。 

Runnable对像就能在ui程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。

实现的功能与上一篇文章(Handler+Thread)相同。

public class TestActivity extends Activity {

Button btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.handler_msg);

btn = (Button) findViewById(R.id.button1);

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

        // 模拟耗时的操作。

try {

Thread.sleep(10000);

catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 更新主线程UI

TestActivity.this.runOnUiThread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

btn.setText("更新完毕!");

}

});

}

}).start();

}

});

}

本文转载自:http://blog.163.com/ppy2790@126/blog/static/10324224120138210440928/

粉丝 5
博文 78
码字总数 10995
作品 0
崇明
私信 提问
android 主线程消息队列更新View

主线程消息队列提供的方法 基本上只要继承自View的控件,都具有消息队列或者handler的一些处理方法,下面是一些handler方法以及被View封装了的方法,其底层用的基本都是handler的api。 举例:...

IamOkay
2014/10/27
0
0
Android 线程的初步了解

一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以...

什么都不懂的小石
2017/11/10
0
0
Android更新Ui的几种方法

常用的几种方法简单概括有: - handler.sendMessage(); - handler.post(); - 在activity中可以 runOnUiThread(); - 在子view中可以 view.post() 实现代码省略比较简单。 android在生成页面的...

竹草席
2015/12/14
17
0
runOnUiThread的这个大问题,难道没人注意到吗?

大家都知道,如果在线程中要更新UI的话,有两种方法,一种是handler,还一种就是runOnUiThread。 我这里要说的是runOnUiThread。 大家在网上看例子的时候,基本无一例外都是在线程中这么写的 ...

xiaoxuwei1
2018/07/09
448
2
view.post() & handler.post() & runOnUiThread()

view.post() [View.java] [ViewRootImpl.java] 如果 mAttachInfo != null 则 attachInfo.mHandler.post(action) 这个 attachInfo.mHandler 是什么,在哪初始化不细讲,下文会提到 mAttachInf......

风风风筝
2017/08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

我最喜欢的Mybatis 3.5新特性——Optional支持

Mybatis 3.5 发布有段时间了,终于支持了 Optional ,这么实用的特性,竟然还没人安利……于是本文出现了。 文章比较简单,但非常实用,因为能大量简化恶心的判空代码。 WARNING 由于本文非常...

周立_ITMuch
27分钟前
6
0
Android 开发工具推荐

简评: 自己过去在 Android 开发中发现的好工具,在这里分享给大家。: ) Library methods count 每一个 Android App 的开发中都会用到很多的库,这个工具能够让你看到不同库的大小和,帮助你...

极光推送
27分钟前
0
0
高并发解决方案

我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100...

孤狼悲月
34分钟前
1
0
Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署

本文首发于:Jenkins 中文社区 渐进式交付是持续交付的下一步, 它将新版本部署到用户的一个子集,并在将其滚动到全部用户之前对其正确性和性能进行评估, 如果不匹配某些关键指标,则进行回...

Jenkins中文社区
38分钟前
5
0
大数据辟谣:布洛芬用药不慎可能致死?如此标题党居心何在

相信很多人看到一则“布洛芬用药不慎可能致死”的消息后,内心开始慌乱了。 (新闻来源:微博热搜排行榜) 毕竟健康是每一个人最关注的话题,而布洛芬也是很多人止痛(发烧头痛、喉咙痛、牙痛...

forespider
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部