目录(?)[+]   参考:http://www.2cto.com/kf/201311/255885.html http://www.cnblogs.com/over140/archive/2011/06/24/2088637.html     类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler.对象包含两个额外的int字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作. 尽管Message的构造器是公开的,但是获取Message对象的最好方法是调用…
转http://www.eoeandroid.com/forum-viewthread-tid-49595-highlight-looper.html 一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自动创建其MessageQueue.通常使用一个Looper对象对该线程的MessageQueue进行管理.主线程创建时,会创建一 个默认的Loope…
类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler.对象包含两个额外的int字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作. 尽管Message的构造器是公开的,但是获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(), 这样是从一个可回收对象池中获取Message对象. 1.首先创建Handler对象: private Handler mHandler = new Handler() …
最近几讲内容,我们学习了Android中关于多线程的一些知识,上一讲我们讲解了异步任务 AsyncTask 的操作,Android中还提供了其他的线程操作,如Handler Message MessageQueue Looper 等模块,这些就是Android中的消息处理机制.这部分内容是Android学习过程中的重点和难点.    现在我们就来学习一下Android的消息处理,以及剖析一下相关类如Handler和Message类的源代码,同时使用他们来更新UI主线程的操作.因为Android的…
类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler.对象包含两个额外的int字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作. 尽管Message的构造器是公开的,但是获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(), 这样是从一个可回收对象池中获取Message对象.   1.首先创建Handler对象: private Handler mHandler = new Handler(…
综合:http://blog.csdn.net/dadoneo/article/details/7667726 与 http://android.tgbus.com/Android/androidnews/201204/421642.shtml 一. 消息机制常用类的介绍和使用 在Android程序运行中,线程之间或者线程内部进行信息交互时经常会使用到消息,如果我们熟悉这些基础的东西及其内部的原理,将会使我们的Android开发变的容易.可以更好地架构系统.在学习Android消息机制之前,我们…
  Message(消息):       一. Message的字段:    在Android中,Message作为线程之间(主要是子线程和UI主线程之间)数据交换的载体,通过Handler去传递.它包含几个常用的字段:     1.arg1和arg2两个int类型的字段:主要在线程之间需要传递简单的int类型的数据时使用.     2.what字段:int类型,主要用于标识一个Message.当在子线程中定义一个Message时,通常指定what的值为一个int常量,该Message传递到主线…
PS:由于感冒原因,本篇写的有点没有主干,大家凑合看吧.. 学习内容: 1.MessageQueue,Looper,MessageQueue的作用. 2.子线程向主线程中发送消息 3.主线程向子线程中发送消息     异步消息处理机制是Android提供给我们异步更新UI的一种很好的方式,线程之间以Handler作为桥梁,使得Message可以在线程间进行传递,从而实现异步的一种方式. 1.MessageQueue   MessageQueue顾名思义,指的就是消息队列,说这个之前我们首先需要知…
在handler.obtainMessage()的参数是这样写的: Message android.os.Handler.obtainMessage(int what, int arg1, int arg2, Object obj) public final Message obtainMessage (int what, int arg1, int arg2, Object obj) Since: API Level 1 Same as obtainMessage(), except that…
概览 Android消息机制是Android操作系统中比较重要的一块.具体使用方法在这里不再阐述,可以参考Android的官方开发文档. 消息机制的主要用途有两方面: 1.线程之间的通信.比如在子线程中想更新UI,就通过发送更新消息到UI线程中来实现. 2.任务延迟执行.比如30秒后执行刷新任务等. 消息机制运行的大概示意图如下: 一个线程中只能有一个Looper对象,一个Looper对象中持有一个消息队列,一个消息队列中维护多个消息对象,用一个Looper可以创建多个Handler对象,Han…
前几天须要实现一个以太网功能就看了以太网的源代码部分,看见了源代码部分在消息处理时,发现有一些不同的地方:   平时我在处理消息时:   1.首先创建Handler对象:   private Handler handler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0:   break;     default: break; } }; };   2.然后是消息处理:  …
缩略信息是: sending message to a Handler on a dead thread 我是用IntentService时报的 稍微纤细一点儿的信息是: Handler (android.os.Handler) {215ddea8} sending message to a Handler on a dead thread. 在另一次在IntentService里使用MediaPlayer 播放铃声也再现错误,信息是:Handler) {42414500} sending me…
原文地址: http://www.cnblogs.com/android007/archive/2012/05/10/2494766.html 话说在工作中第一次接触android 的Handler 的时候,不知道怎么去关注性能. 记得当时这么写的: Message msg = new Message() msg.what = xxx; msg.arg1 = xxx; msg.arg2 = xxx; handler.sendMessage(msg); 这样写也没有绝得不好,反正当时项目的功能实现…
Message,MessageQueue,Looper,Handler详解+实例 原文地址 Android的Handler使用(这篇简单介绍Handler的使用) 一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构.创建一个线程的时候,并不会自动创建其MessageQueue.通常使用一个Looper对象对该线程的MessageQueue进行管理.主线程创建时,会创建一个默认的L…
一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列.存放消息的地方.每个线程最多仅仅能够拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自己主动创建其MessageQueue.通常使用一个Looper对象对该线程的MessageQueue进行管理.主线程创建时.会创建一个默认的Looper对象,而Looper对象的创建,将自己主动创建一个Message Queue. 其它非主线程,不会自己主动创建Looper,要须要的时候.通过调用p…
本文转自博客:http://blog.csdn.net/he90227/article/details/43567073 一. 图解与概述 首先Android中 的每一个线程都会对应一个MessageQueue和Looper.见名知意,MessageQueue即线程用来维护线程产生的消息的消息队列,而这个 队列的调度则是由Looper来完成的.Looper负责将产生的消息放入队列,并及时的将合适的消息从队列中取出并交由合适的接受者处理.处理消息的便 是每个线程内部的Handler对象,特别是在U…
转自:http://solarex.github.io/blog/2015/09/22/android-message-handling-mechanism/ Android is a message driven, message driven several elements: The message says: Message Message queue: MessageQueue The news cycle, remove the message processing for circ…
package org.hualang.handlertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.util.Log; import android.widget.To…
Message,MessageQueue,Looper,Handler详解   一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自动创建其MessageQueue.通常使用一个Looper对象对该线程的MessageQueue进行管理.主线程创建时,会创建一个默认的Looper对象,而Looper对象的创建,将自动创建一个Message Queue…
handler是线程通讯工具类.用于传递消息.它有两个队列: 1.消息队列 2.线程队列 消息队列使用sendMessage和HandleMessage的组合来发送和处理消息. 线程队列类似一段代码,或者说一个方法的委托,用户传递方法.使用post,postDelayed 添加委托,使用 removeCallbacks移除委托. 由上面的特性我们可以简单看出handler类似一个容器对象,它携带了消息的集合和委托的集合.java里没有委托delegate的概念,但是可以通过class来持有一个可…
解析Android消息处理机制 ——Handler/Thread/Looper & MessageQueue Keywords: Android Message HandlerThread Looper UML 本文解析Android如何利用Handler/Thread/Looper以及MessageQueue来实现消息机制的内部实现.知道了它的内部实现机理之后,以后再遇到使用它们时候的任何问题就驾轻就熟.迎刃而解了. Android利用执行在HandlerThread线程中的Looper的相应…
Android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道.平时我们最常使用的就是Message与Handler了,如果使用过HandlerThread或者自己实现类似HandlerThread的东西可能还会接触到Looper,而MessageQueue是Looper内部使用的,对于标准的SDK,我们是无法实例化并使用的(构造函数是包可见性). 在Androi…
Android App 内存泄露之Handler Handler也是造成内存泄露的一个重要的源头,主要Handler属于TLS(Thread Local Storage)变量,生命周期和Activity是不一致的 ,Handler引用Activity会存在内存泄露. 看一下例如以下代码 /** * * 实现的主要功能. * @version 1.0.0 * @author Abay Zhuang <br/> * Create at 2014-7-28 */ public class Handl…
假设每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时能够调用. (1)在清单文件加入权限 <uses-permission android:name="android.permission.INTERNET"/> (2)编辑工具类 package com.example.g05_handler; import java.io.IOException; import org.ap…
先看两个链接: 1.http://www.2cto.com/kf/201404/290494.html 2. 链接1: android 的多线程实际上就是java的多线程.android的UI线程又称为主线程. 首先是Thread 和 Runnable: Thread才是一个线程,而Runnable可以理解为一个任务.这个任务只是一个接口.具体的任务执行是在 run()方法执行. Thread thread = new Thread(Runnable); 那么就是把一个Runnable任务放到线…
转载请注明出处:http://blog.csdn.net/vnanyesheshou/article/details/73484527 本文已授权微信公众号 fanfan程序媛 独家发布 扫一扫文章底部的二维码或在微信搜索 fanfan程序媛 即可关注 上一篇总结了一下Handler的基本用法,但是对于其原理并不太清楚,这篇主要分析下其内部的原理.看一下其源码是怎么回事,从源码的角度理解Handler机制,Handler.Looper.MessageQueue之间的关系. 简介 先对这几个类做一…
原文地址:http://uule.iteye.com/blog/1705951 handler是线程通讯工具类.用于传递消息.它有两个队列:1.消息队列2.线程队列 消息队列使用sendMessage和HandleMessage的组合来发送和处理消息.线程队列类似一段代码,或者说一个方法的委托,用户传递方法.使用post,postDelayed 添加委托,使用 removeCallbacks移除委托. 由上面的特性我们可以简单看出handler类似一个容器对象,它携带了消息的集合和委托的集合.j…
线程概览 线程是任何多任务系统的基石.可以被认为是一个主进程的多个子进程.这样做的目的就是了增加应用的性能. 应用主线程 当一个Android应用被打开的时候,系统会默认开辟一个线程.这个线程就被叫做是主线程.主线程的主要任务就是处理用户输入,即事件处理和view上的用户交互.任何应用里的其他组件,默认的,都是在主线程中运行的. 一个应用的任何组件,如果在主线程上执行一个耗时的任务的话,都会使整个应用等待这个任务的完成.如果耗时过长的话就会触发系统的“Application is unrespo…
Why? 因为在Android系统中UI操作并不是线程安全的,如果多个线程并发的去操作同一个组件,可能导致线程安全问题.为了解决这一个问题, android制定了一条规则:只允许UI线程来修改UI组件的属性等,也就是说必须单线程模型,这样导致如果在UI界面进行一个耗时叫长的数据 更新等就会形成程序假死现象 也就是ANR异常,如果20秒中没有完成程序就会强制关闭.所以比如另一个线程要修改UI组件的时候, 就需要借助Handler消息机制了. Use Status? 1.在新启动的线程中发送给消息…
1. 什么是Handler: Handler 网络释义"机械手.经理"意思,在Android它用于管理多个线程UI操作: 2. 为什么会出现Handler: 在Android里面的设计机制.只同意主线程(动时所移动的线程,由于此线程主要是完毕对UI相关事件的处理,所以也称UI线程) 对UI进行改动等操作,这是一种规则的简化,之所以这样简化是由于Android的UI操作时线程不安全的.为了避免多个线程同一时候操作UI造成线程安全 问题,才出现了这个简化的规则. 由此以来,问题就出现了,由…