一. Looper1. 如何使用Looper?(1) 定义一个LooperThread.class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare(); // 调用.....
分类:
其他好文 时间:
2015-03-14 16:34:25
阅读次数:
132
Handler主要是主线程和子线程通信。一般子线程中做一些耗时操作做完之后通知主线程来修改UI。
实际上android系统在Activity启动或者状态变化等都是通过Handler机制实现的。
首先进入到ActivityThread的main方法中
public static void main(String[] args) {
……
Looper.pre...
分类:
移动开发 时间:
2015-03-14 08:28:31
阅读次数:
156
在Android系统中的应用程序,与Java的应用程序相同,都是靠消息驱动,简单的说就是:有一个消息队列,我们可以不断的向这个消息队列中添加消息,并从中取出消息,处理消息。Android中与此工作相关的主要是由Handler,Looper以及Message来完成。
Looper类:为一个线程运行着一个消息循环,内部有一个消息队列,每一个线程只允许最多存在一个Looper;
Handler类:允许你向...
分类:
移动开发 时间:
2015-03-13 16:30:39
阅读次数:
208
Handler 一个线程只有启动了Looper,才能在其中创建Handler的对象,进行消息处理,否则程序会出现异常。
启动Looper通过调用静态方法Looper.prepare();来实现。
一个线程只能有一个Looper和一个MessageQueue,但是可以有多个Handler对象。程序中可以使用不同的Handler对象处理不同的消息。Timer定时器也是常用的实现多线程程序的方式,但是...
分类:
移动开发 时间:
2015-03-12 06:27:27
阅读次数:
163
在子线程要更新UI时,通常是通过Handler来发送消息到UI线程来更新的,一般有两种方法,一种为sendMessage,另一种为post,这两种方法都可以通过XXXAtTime方法来指定时间发送或者post,也可以用个XXXDelayed来指定延迟时间。
首先先看下Handler定义了几个重要的变量:
final MessageQueue mQueue;
final Looper m...
分类:
其他好文 时间:
2015-03-09 19:10:12
阅读次数:
174
1. Thread Local Storage (线程局部存储)
我们通过位于android.os包下的Looper.class源码可以看到成员变量区有一个线程局部变量sThreadLocal,该类的作用是线程局部存储?那么是线程局部存储TLS?这个问题可以从变量作用域的角度来理解。
变量的常见作用域一般包括以下几种。
函数内部变量。其作用区域是...
分类:
移动开发 时间:
2015-03-05 19:31:46
阅读次数:
189
在第二篇文章《Android中利用Handler实现消息的分发机制(一)》中,我们讲到主线程的Looper是Android系统在启动App的时候,已经帮我们创建好了,而假设在子线程中须要去使用Handler的时候,我们就须要显式地去调用Looper的 prepare方法和loop方法,从而为子线程创...
分类:
移动开发 时间:
2015-03-05 16:42:43
阅读次数:
173
在Android系统里的线程分为有消息循环的线程和没有消息循环的线程。我们上一节介绍的应用程序主线程就是一个有消息循环的线程,而通过直接继承Thread类的线程是没有消息循环的线程,当然我们也可以通过在线程里调用Looper.prepare(),让系统为该线程建立一个消息队列。下面我们介绍两种常用的...
分类:
编程语言 时间:
2015-03-04 12:34:38
阅读次数:
183
ioffers 竭诚为您提供面试服务,让您获得满意offer授课内容第1章android消息机制本节大纲深入理解android的消息机制 handler message looper异步处理机制 AysncTask第2章android事件传递机制本节大纲深入理解android事件传递机制,源码讲解事...
分类:
编程语言 时间:
2015-02-28 15:52:22
阅读次数:
142
当一个Android应用启动的时候,会自动创建一个供应用主线程使用的Looper实例。Looper的主要工作就是一个一个处理消息队列中的消息对象。在Android中,所有Android框架的事件(比如Activity的生命周期方法调用和按钮点击等)都是放入到消息中,然后加入到Looper要处理的消息队列中,由Looper负责一条一条地进行处理。主线程中的Looper生命周期和当前应用一样长。...
分类:
移动开发 时间:
2015-02-25 10:21:31
阅读次数:
260