Android中Handler,线程相关问题

转载 2012年03月23日 15:17:59

http://www.oschina.net/android/78/handler-and-thread

Android的控件是非线程安全的,在其他线程中操作主线程的控件将可能发生意外的情况,因此设计者希望对控件的操作依然交给主线程去完成,但在其他线程中,我们希望有一种机制去通知主线程去改变控件,于是Handler诞生了。这有点类似C#中的委托,但因为Java中的函数本身不能作为其他函数的参数,我们只能通过发送某个消息来告知主线程中的这个函数:你该如何操作某个控件了!

Handler对象也是运行一个线程上的,默认的空构造函数的Handler将会运行在创建它的线程上。也就是说,样例代码中的Handler是运行在主线程上的一个对象,它拥有一个接受消息的回调函数,这里可以处理一些逻辑,因为它是运行在主线程上的,所以它可以安全的操作控件。而在另一个线程中,我们可以截获Handler的Message,它就向一个邮递员,我们把要送达的信塞给他,然后告诉他:你快送过去吧!而信里则是你希望收信者做的事,邮递员根本没必要知道具体的任务。最终邮递员将信送达,主线程上的收信者拆开信封,看到“50”,他立刻明白:发信者要我把进度改成50%。

如果文字太过枯燥,看一下生动的图片吧:

 

相关文章推荐

Android线程1 Handler处理更新UI子线程问题

我们知道,每个eActivity都有一个Main线程,也称之为UI线程,当在子线程中更新UI线程中的元素就会出现Crash。解决方式就是通过handler解决。现在上代码,demo很简单,使用子线程更...

Android_Handler的线程队列Demo

  • 2015-12-07 00:03
  • 2.53MB
  • 下载

线程阻塞与Handler相关超详细原理讲解

转载请标明出处: http://blog.csdn.net/vinicolor/article/details/49642861; Handler的重要性我就不多说了,想学习Android的...

Android线程操作 handler demo

  • 2016-08-13 11:28
  • 7.66MB
  • 下载

关于handler在子线程中无法给activity传递信息的问题及解决办法

遇到一个问题,我在与服务器交互信息时,开启了另一个线程,并未这个线程(子线程)传入了handler,得到服务器返回的结果后,我开启了Looper,然后调用handler.sendMessage()想把...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)