关于Handler的SyncBarrier解析

概念 SyncBarrier是同步分隔栏的意思,其实它是一个特殊的Message,它的targer为null。当消息队列遍历到这种消息类型的时候,它会跳过后面的同步Message(异步的Message会执行),这就是所谓的“同步分割栏”。 同步消息和异步消息 同步消息和异步消息的设置可以通过Handler的构造方法来指定: public Handler(Callback callback, boolean async) 也可以在Message中设置: public void setAsynchronous(boolean async) 同步消息和异步消息的区别就是SyncBarrier对它们的处理不同。 源码解析 private »

Android AIDL跨进程通讯解析例子

前言 本文通过一个模拟书店的小项目来向大家一步一步展示Android中通过AIDL实现跨进程通讯,虽然项目虽小,但是五脏俱全,通过本篇博客的学习,可以让大家迅速掌握AIDL的使用和了解Android跨进程通讯的一些基本知识,为接下来学习binder这块打下基础。 项目介绍 首先看一下项目的目录结构: 可以看到有三个Module: BookStock:图书存储,数据保存在本地数据库(该项目是没有界面的); BookStore:书店展示,提供图书的增删改查功能; model:存放实体类和aidl文件。 这里的BookStore模块和BookStock模块是通过跨进程通讯实现数据交互的,下面看下项目截图: 就是这么简单,两个界面,一个列表一个详情。 开始 一、 »

Android Hanlder消息机制源码浅析

开始 Android的消息机制主要是围绕Handler展开的,而对于Handler大家都再熟悉不过了,在开发过程中,有时候需要在子线程中进行耗时的操作,比如访问网络、I/O操作,当耗时操作完成之后需要在UI上做一些改变,由于Android开发的限制,我们不能在子线程中直接访问UI控件,这个时候就可以通过Hanlder将更新UI的操作切换的主线程中执行。 为什么Android系统不允许在子线程中更新UI呢?因为Android的UI控件不是线程安全的,如果在多线程中并发访问可能会导致一些不可预期的并发问题。那为什么不对UI控件的访问加上同步操作呢?主要是因为加锁会让UI访问的逻辑变得复杂,同时加锁也会降低访问的效率。 很多人认为Handler的作用是更新UI,的确没错,但是更新UI仅仅是Handler的一个特殊使用场景。 Android消息机制模型 Android的消息机制并不复杂,主要涉及一下这几个类: Handler: 负责消息的发送和处理; »

Android TaskAffinity实践详解

介绍 其实一直以来都知道在AndroidManifest的Activity中可以配置TaskAffinity这个属性,只知道这个东西和Activity的任务栈有关,今天花了点时间好好学习了一些这个东西。 launchMode(启动模式) Activity的任务栈是我们很熟悉的了,它是一种后进先出的结构。位于栈顶的Activity处于焦点状态,当按下back按钮的时候,栈内的Activity会一个一个的出栈,并且调用其onDestory()方法。如果栈内没有Activity,那么系统就会回收这个栈,每个APP默认只有一个栈,以APP的包名来命名. standard: 标准模式,每次启动Activity都会创建一个新的Activity实例,并且将其压入任务栈栈顶,而不管这个Activity是否已经存在。Activity的启动三回调(onCreate()->onStart( »

[转] HashMap实现原理及源码分析

转自 http://www.cnblogs.com/chengxiao/p/6059914.html 介绍 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。 目录 什么是哈希表 HashMap实现原理 »