MessageQueue:由Looper负责管理。采用先进先出的方式管理Message.
Looper:每个线程只有一个Looper,负责管理MessageQueue,会不断从MessageQueue中取出消息,并将消息分给对应的Handler处理
Handler:能把消息发送给Looper管理的MessageQueue,并负责处理Looper分给它的消息(在新启动的线程中发送消息;在主线程中...
分类:
其他好文 时间:
2015-01-29 17:42:59
阅读次数:
282
一、背景出于性能优化考虑,Android的UI操作并不是线程安全的,这意味着如果有多个线程并发操作UI组件,可能导致线程安全问题。为了解决这个问题,Android制定了一条简单的原则:只允许UI线程(亦即主线程)修改Activity中的UI组件。当一个程序第一次启动时,Android会同时启动一条主...
分类:
移动开发 时间:
2015-01-29 14:18:22
阅读次数:
239
(该代码在4.2.2内调试通过)1.记得加权限注意:Android 4.0之后,就不能在主线程进行socket通信,否则会抛异常。2.代码MainActivity.java 1 package mao.example.quicksend; 2 3 4 import android.app.Act.....
分类:
移动开发 时间:
2015-01-28 19:23:49
阅读次数:
215
Android中通常分为主线程(UI Thread/ Main Thread)和工作线程(worker Thread).所有的组件默认都是在主线程里面的,当进行一些耗时的操作时,比如:访问网络或者对数据库进行处理的时候UI Thread 就会被阻塞,如果阻塞时间超过5秒,这是就会出现比较常见的ANR...
分类:
移动开发 时间:
2015-01-28 17:23:37
阅读次数:
221
一、工作机制在子线程中创建一个handler的成员变量;在子线程得到handler的引用,调用sendMessage给主线程发送一个消息在handler中重写handlermessage,修改ui界面二、工作原理 前提知识:所有的ui界面的操作系统,后台都运行者一个死循环,它在不停的监听和接收用户发...
分类:
其他好文 时间:
2015-01-28 00:54:04
阅读次数:
287
当应用程序启动时,会开启一个主线程(也就是UI线程),由它来管理UI,监听用户点击,来响应用户并分发事件等。所有一般在主线程中不要执行比较耗时的操作,如延时、下载网络数据、死循环,否则出现ANR错误。所以就将这些操作放在子线程中,但是由于Android UI线程是不安全的,所有只能在主线程中更新UI。使用Thread来创建子线程、使用Message来存储数据、使用Handler来处理消息数据。...
分类:
移动开发 时间:
2015-01-26 12:02:45
阅读次数:
173
在上一节中,阿堂和网友们分享了ASIHTTPRequest框架对于get,post的同步请求方式。很显然,如果网速比较慢,查询的时候会一直很黑屏,直到请求结束界面才出现结果,这样用户体验肯定很不好了。正如上节阿堂所说,同步请求一般只是在某个子线程中使用,而不在主线程中使用。ASIHTTPReques...
分类:
Web程序 时间:
2015-01-26 11:53:44
阅读次数:
199
1.主线程调用方法:imageView = new ImageView(this);AsynImageLoader asynImageLoader = new AsynImageLoader();asynImageLoader.showImageAsyn(imageView, URL, R.draw...
分类:
移动开发 时间:
2015-01-26 06:31:48
阅读次数:
268
Memcached主线程中监听socket注册事件和工作线程中连接socket注册事件的回调函数都是event_handler,且event_handler的核心部分都是一个有限状态机:drive_machine。因此接下来将对该状态机具体的业务处理进行深入的剖析。
memcached将每个socket都封装为一个conn结构体,该结构体包含了比如socket的文件描述符sfd、注册事件event、连接状态结构体conn_states,等等诸多信息字段,其中的状态结构:conn_states中包含了该so...
分类:
系统相关 时间:
2015-01-25 15:16:49
阅读次数:
255