当主线程队列,如果处理一个消息超过5秒,android 就会抛出一个 ANP(无响应)的消息
来源:互联网 发布:如何查看淘宝店铺等级 编辑:程序博客网 时间:2024/06/05 06:44
当主线程队列,如果处理一个消息超过5秒,android 就会抛出一个 ANP(无响应)的消息
http://www.cnblogs.com/youxilua/archive/2011/11/25/2263825.html
Handlers
为什么要使用Handlers?
因为,我们当我们的主线程队列,如果处理一个消息超过5秒,android 就会抛出一个 ANP(无响应)的消息,所以,我们需要把一些要处理比较长的消息,放在一个单独线程里面处理,把处理以后的结果,返回给主线程运行,就需要用的Handler来进行线程建的通信,关系如下图;
下面是Handler,Message,Message Queue 之间的关系图
这个图有4个地方关系到handlers
1, 主线程(Main thread)
2, 主线程队列(Main thread queue)
3,Hanlder
4,Message
上面的四个地方,主线程,和主线程的队列我们无需处理,所以,我们主要是处理Handler 和 Message 之间的关系.
我们每发出一个Message,Message就会落在主线程的队列当中,然后,Handler就可以调用Message绑定的数据,对主线程的组件进行操作.
Message
作为handler接受的对象,我们有必要知道Message这个数据类型是个怎样的数据类型
从官方文档中我们可以知道message 关于数据的字段
public int what public int arg1 public int arg2 public Object obj从上面的表格可以看出,message 提供了一个对象来存储对象,而且,还提供了三个int字段用来存储少量int类型
当然,除了以上三个Message 自有的字段外,我们还可以通过setData(Bundle b),来存储一个Bundle对象,来存储更丰富的数据类型,例如,图片等等.
在初始化我们的message的时候就可以为我们的Message默认字段赋值,注意赋值顺序!!!
123456789Message msg = obtainMessage();
//
设置我们what 字段的初值,注意顺序!!!
Message msg = mHandler.obtainMessage(int what);
//
下面同理
Message msg = mHandler.obtainMessage(int what,Object object);
Message msg = mHandler.obtainMessage(int what,int arg1,int arg2);
Message msg = mHandler.obtainMessage(int what,int arg1,int arg2, Object obj
);
- 当主线程队列,如果处理一个消息超过5秒,android 就会抛出一个 ANP(无响应)的消息
- 主线程中有多个handler的情况,只会共用一个消息队列(看代码)
- android上向主线程发消息时的一个常见错误
- 在项目中用到datatables比较多,但是当datatables加载超过1000多的时候就会出现有点缓慢的的样子,这个时候如果继续增加数据量让datatables去处理,那会是一个让人抓狂的事情,幸
- Android消息队列处理消息
- 利用主线程与子线程间的消息通讯,实现任务处理队列
- Android network:主线程将创建请求放入(请求)队列,处理线程每次取一个请求,进行处理(发送/读响应)
- Android主线程消息循环
- 一个com+消息队列的例子
- 一个消息队列类的实现C++
- 一个简单的C#消息队列示例
- 一个快速的消息队列(最大堆)
- 一个简单的C#消息队列示例
- 一个消息队列很好的例子
- 查询一个消息队列的状态,OSQQuery()
- 查询一个消息队列的状态,OSQQuery()
- 一个轻便易用的消息队列
- 如何处理在android中有来电就给来电用户发送一个消息?
- glPushMatrix和glPopMatrix的作用
- 火车票购买问题模拟-同步
- java 一致性哈希算法级原理
- android 百度地图api 2.1.3版本申请key(SDK 4.0)
- web网页设置
- 当主线程队列,如果处理一个消息超过5秒,android 就会抛出一个 ANP(无响应)的消息
- 网页展示 word PDF 方案 仿百度文库类
- SQL Server 2008编程入门经典笔记(第二章:SQL Server管理工具)
- Jar包的正确运行方法
- 我的conky配置
- The Linux SCSI Generic (sg) Driver(使用说明)
- 自己的Allegro16.3的学习笔记,算是回报社会吧。
- C# WinForm 应用程序的 SQL Server 连接配置界面 动态库
- 键盘的快捷键