Android开发中,Handler用的非常多,因为它和AsyncTask一样是系统提供给我们的异步的通信机制。能够将一些更新和别的不适合放在UI主线程的操作放到它们中去。
Handler的作用主要有两个:一是在线程中发送消息, 二是获取和处理消息。既可以发送消息sendEmptyMessage(int what) ,也可以发送指定的消息sendMessage(Message msg),还可以利...
分类:
其他好文 时间:
2015-04-03 09:25:07
阅读次数:
155
new Handler().obtainMessage().sendToTarget()这句话用着真爽,一行代码就能搞定异步消息了!所以在代码中使用的算是非常频繁的了,那这又是一个什么样的过程呢? 这个过程中又有什么玄机呢? 这篇文章,我们来一步步的分析一下这三句话。
1、new Handler()的分析
new Handler()会辗转来到public Handler(Callb...
分类:
其他好文 时间:
2015-03-31 09:22:39
阅读次数:
295
EventBus使用在介绍EventBus之前先捋顺以下Android自带的应用内通信方式有哪些?Android 应用内常用通信方式1.使用handler进行线程间通信handler是和Thread绑定的,主线程中创建Hander直接通过new Handler() 来创建即可。自定义线程中则还需要调用Looper.prepare Looper.loop来让Handler起作用,这里就不详细讲解原理及...
分类:
其他好文 时间:
2015-03-29 19:36:42
阅读次数:
247
相信不少人对这几个概念深恶痛绝,因为它们“像雾像雨又像风”——自我感觉都很熟识,如果下一次再相遇,却又陌生得很。这种“隔靴搔痒”的感觉促使我们必须与这些“顽固分子”来个彻底的决断。
先不要想太多,任头脑中随意画下对这些概念的第一印象,如图5-5所示。
▲图5 5 概念初探
图5-5是我们对这几个概念的“感官”释义,读者可以尝试着思考下是否和自己所想的基本一致。
那么,如果把这些概念糅...
分类:
其他好文 时间:
2015-03-27 23:57:54
阅读次数:
445
1)在Android 2.3以前,为防止ANR(Application Not Responding),Google是不赞成将网络连接等一系列耗时操作直接放到应用主线程进行的,推荐将这类操作放在子线程内;而Android 4.0版本开始,Google强制要求这类操作必须在子线程内进行,否则将抛出 N...
分类:
其他好文 时间:
2015-03-18 17:23:45
阅读次数:
124
我们首先来看HandlerThread的创建过程,public class HandlerThread extends Thread { @Override
public void run() {
mTid = Process.myTid();
Looper.prepare();
synchronized (this) {...
分类:
移动开发 时间:
2015-03-17 15:48:11
阅读次数:
176
优化项目过程中发现了一个很Low的问题,整理一下,备忘:
说问题之前先看下HandlerThread的定义
一个封装了looper的线程:
Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来...
分类:
移动开发 时间:
2015-03-16 23:15:54
阅读次数:
234
Android中的多线程可以有多种实现方式,前面我们已经讲过了封装程度较高异步任务(AnsyncTask),这一节我们来看看较为灵活的方式:Handler Looper MessageQueue Message。Message:用于线程之间传递信息,发送的消息放入目标线程的MessageQueue中...
分类:
移动开发 时间:
2015-03-16 08:38:53
阅读次数:
196
Looper与Handle是Android独有的新概念,但我们学习中常常将他们分开学习,实际上两者密不可分。
Looper与Handle的关系:
Looper是负责在线程里建立消息循环的类,包括准备,开始循环,停止等整个消息循环的生命周期。Handle是负责不同线程之间消息的类,包括消息的发送,接受,清除等消息的生命周期。
但是只有存在Looper的线程,才会用到Handle。没有Handle...
分类:
移动开发 时间:
2015-03-15 21:24:32
阅读次数:
145
今天讲一下,在Android中主线程如何向子线程中发送消息的问题。
或许回想无非就是创建一个Handler对象,然后一个线程发消息,另一个接收消息嘛……
原理确实是这样,但是我们平时,是从子线程向主线程发消息,而主线程默认已经帮我们完成了Looper的操作,所以我们只需要简单的“创建一个Handler对象,然后一个线程发消息,另一个接收消息”……
我们先说一下这个Looper是神马吧。...
分类:
移动开发 时间:
2015-03-14 16:56:14
阅读次数:
12948