近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子。 andriod提供了 Handler 和 Looper 来满足线程间的通信。例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。在Andr...
分类:
移动开发 时间:
2014-11-13 18:50:04
阅读次数:
211
============问题描述============ 写了一个Service,在里面启动了一个线程,于是实例化了一个Handler来处理消息。但运行时抛出异常说不能在没有调用Looper.prepare()的线程中创建Handler。然后我在Service的onCreate()中调用Looper...
分类:
其他好文 时间:
2014-11-11 16:02:13
阅读次数:
224
11-06 18:29:15.582: W/WebView(27807): java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid...
分类:
移动开发 时间:
2014-11-07 08:39:36
阅读次数:
470
Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,从消息队列里取 消息,处理消息。注:写在Looper.loop(...
分类:
移动开发 时间:
2014-11-05 12:53:19
阅读次数:
169
创建线程消息队列Android应用程序的消息队列是使用一个MessageQueue对象来描述的,它可以通过调用Looper类的静态成员函数prepareMainLooper或者prepare来创建,其中,前者用来为应用程序的主线程创建消息队列;而后者用来为应用程序的其它子线程创建消息队列。在分析An...
分类:
移动开发 时间:
2014-11-03 20:53:28
阅读次数:
371
[java] view plaincopyprint?publicvoidshowToast(Stringmsg){Looper.prepare();Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show();Loope...
分类:
移动开发 时间:
2014-11-03 12:48:51
阅读次数:
158
Message,MessageQueue,Looper,Handler详解一、几个关键概念1、MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。创建一个线程的时候,并不会自动创建其MessageQueu...
分类:
其他好文 时间:
2014-11-02 08:12:44
阅读次数:
164
android 的service和activity是运行在UI主线程的。在android线程中,只有主线程即UI线程有自己的默认的消息队列。子线程需要创建自己的消息队列,并把消息发给队列,并循环起来,发给handler处理。
1、Looper.prepare();给子线程创建消息队列。
2、Looper.loop();把消息放入消息队列并循环起来。
如下是一个通过activity的oncre...
分类:
移动开发 时间:
2014-10-31 15:51:01
阅读次数:
186
日志打印A/Looper(31455): Could not create wake pipe. errno=24A/Looper(1960): Could not create wake pipe. errno=24A/libc(1960): Fatal signal 11 (SIGSEGV) ....
分类:
其他好文 时间:
2014-10-29 10:25:43
阅读次数:
783
在这篇文章开始前,我们先总结一下前两篇文章中关于Handler, Looper和MessageQueue等的一些关键点:
0)在线程中创建Handler之前,必须先调用Looper.prepare(), 创建一个线程局部变量Looper,然后调用Looper.loop() 进入轮循。
1)当Handler创建之后,就可以调用Handler的sendMessageAtTime方法发送消息,而实际上是调用MessageQueue的enqueueMessage方法,将对应的消息放入消息队列。
2)每一个线程都只有...
分类:
移动开发 时间:
2014-10-28 12:11:13
阅读次数:
266