一、Handler的定义:
主要接受子线程发送的数据,
并用此数据配合主线程更新UI.
解释: 当应用程序启动时,Android首先会开启一个主线程
(也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发,
比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要...
分类:
移动开发 时间:
2014-09-13 00:51:04
阅读次数:
300
在winform C/S程序中经常会在子线程中更新控件的情况,桌面程序UI线程是主线程,当试图从子线程直接修改控件属性时会出现“从不是创建控件的线程访问它”的异常提示。跨线程更新UI控件的常用方法有两种:1.使用控件自身的invoke/BeginInvoke方法2.使用Synchronization...
分类:
编程语言 时间:
2014-09-12 17:05:53
阅读次数:
225
一、为了解决新线程不能更新UI组件的问题,Android提供了如下几种解决方案。 1)使用Handler实现线程之间的通信; 2)Activity.runOnUiThread(Runnable); 3)View.post(Runnable); 4)View.postDelayed(Runna...
分类:
其他好文 时间:
2014-09-11 22:21:42
阅读次数:
340
Google参考了Windows的消息处理机制,在Android系统中实现了一套类似的消息处理机制。学习Android的消息处理机制,有几个概念(类)必须了解:1. Message消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给U...
分类:
移动开发 时间:
2014-09-10 15:41:40
阅读次数:
420
如图,Android上新开的线程如想更新UI,需要重新跳到主线程中才能操作,以下是老外给出的几种方案,大家多多学习下.
1通过UI控件post一个runnable子类:
private void loadIcon() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Th...
分类:
移动开发 时间:
2014-09-03 18:10:07
阅读次数:
241
本文回答了“为什么使用Handler能跨线程更新UI?”,同时从源码角度剖析了暗藏在Handler背后的玄机:Looper(封装了消息循环)和MessageQueue(消息队列),它们是所有App(Activity)得以运作的核心。Handler本质上具有两个角色——消息队列的窗口(Handler.sendMessage)、处理消息的回调(Handler.handleMessage)。最后指出,后台线程通过Handler更新UI本质上是“生产者消费者问题”。...
分类:
移动开发 时间:
2014-08-28 18:07:55
阅读次数:
313
当在非UI线程中更新UI(程序界面)时会出现如下图所示的异常:
Only the original thread that created a view hierarchy can touch its views.
那如何才能在非UI线程中更细UI呢?
方法有很多种,在这里主要介绍两种:
第一种:在需要更新UI的代码行后加Looper.prepare();与Looper.loop();两句话即可。如:...
分类:
移动开发 时间:
2014-08-27 20:34:08
阅读次数:
352
如果解析xml在主线程,则要在将xml解析成一个string,并进行解析;主线程中更新UI的处理不应过多,可以另起方法;否则会造成主线程中太多工作,而停止运行。 private List parse(String xmlStr){ SAXParserFactory saxParserFa...
分类:
其他好文 时间:
2014-08-23 21:33:41
阅读次数:
268
XAML界面很简单,只有一个按钮和一个lable元素,要实现点击button时,lable的内容从0开始自动递增。 C#private void button_Click(object sender, RoutedEventArgs e){ for (int i = 0; i ...
分类:
其他好文 时间:
2014-08-22 00:17:25
阅读次数:
181
在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程...
分类:
移动开发 时间:
2014-08-20 12:27:32
阅读次数:
309