发现一些刚学android的人,和我当初一样,对android的线程会存在着一定误区。在android中,开启新线程时,一些人会用以下方法:new Handler().post(r);但是这样并不是开启新线程,而只是把当前的任务加入到主线程当中。如果要开启新线程,则应该使用HandlerThread...
分类:
移动开发 时间:
2014-12-28 11:34:19
阅读次数:
127
一、概述:
顾名思义,它实际上仍然是一个Thread,只不过这个Thread比较特殊,它内部包含了一个Looper对象。这个Looper对象可以被用来创建一个Handler,在创建Handler对象之前,必须要先调用该Thread的start()方法。
二、实现原理:
1.为什么在构造Handler对象之前,必须得先调用Thread的start()方法?...
分类:
其他好文 时间:
2014-12-24 18:15:26
阅读次数:
361
package com.android.settings;
import android.os.Bundle;
import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.text.format.Time;
import android.util....
分类:
移动开发 时间:
2014-12-22 14:28:22
阅读次数:
136
之前说过HandlerThread的原理::
Handler机制的分发中心就在Looper中的loop(),HandlerThread将loop转到子线程中处理,降低了主线程的压力,使主界面更流畅
其实说白了,创建HandlerThread,只是为了用此线程的looper 最终的runnable都还是post到主线程运行(已用Toast测试过)
最终的最终就是...
分类:
其他好文 时间:
2014-12-10 14:18:00
阅读次数:
228
转载地址:http://www.cnblogs.com/zhangs1986/p/3602154.htmlIntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务。IntentService有以下特点:(1)它创建...
分类:
移动开发 时间:
2014-12-04 10:10:30
阅读次数:
169
HandlerThread 继承自Thread,内部封装了Looper。
首先Handler和HandlerThread的主要区别是:Handler与Activity在同一个线程中,HandlerThread与Activity不在同一个线程,而是别外新的线程中(Handler中不能做耗时的操作)。
用法:
[java] view
plaincopyprint?
...
分类:
移动开发 时间:
2014-12-02 15:17:56
阅读次数:
236
说到代码的可读性,有时候,我们更加看重代码之间的层次或者说模块化,耦合度等特点。
不同的业务逻辑,不同的功能,应该实现在不同的模块中,而模块与模块之间就可以通过一个消息来通信,而这种消息通讯方式,我们就可以利用Handler和HandlerThread来实现。
比如,最近做的一个浏览器的小Demo,其类图如下:
...
在不同的模块实现中, 我们可以调用registerHandler方法,将其对象的Handler注册到MessageDispatcher中,然后通过sendMessage方法,指定对应的目标,...
分类:
移动开发 时间:
2014-10-28 20:09:23
阅读次数:
386
当我们需要工作线程来操作的时候,很多时候会有同步问题,UI更新问题。Handle机制就是为了解决这个问题而产生的。android允许每个线程都有自己的消息队列,同时也可以是主线程消息队列。但是很多时候,我们希望可以快速的创建一个支持自己消息队列的android线程,这个时候HandlerThread...
分类:
编程语言 时间:
2014-10-19 15:29:03
阅读次数:
237
上一篇文章提到了Android系统的UI线程是一种带消息循环(Looper)机制的线程,同时Android也提供了封装有消息循环(Looper)的HandlerThread类,这种线程,可以绑定Handler()对象,并通过Handler的sendMessage()函数向线程发送消息,通过handleMessage()函数,处理线程接收到的..
分类:
移动开发 时间:
2014-10-18 03:08:41
阅读次数:
187
我们知道,Android系统为了提高程序的实时响应能力,不允许在UI线程中进行耗时的操作,否则会出现ANR异常,因此必须将耗时的任务放到非UI线程中执行。Android/Java提供了很多类来帮助大家完成异步操作,比如:Thread类,Timer类,AsyncTask类,HandlerThread类,以及Executor接..
分类:
移动开发 时间:
2014-10-15 04:28:00
阅读次数:
360