Vane's Blog

Android消息机制-Handler源码分析

1 概述 Android的消息机制简单来说指的是Handler与MessageQueue、Message和Looper完成一个体系机制,它的使用很简单,Handler消息机制用于同进程的线程间通信。通过它可以轻松的将一个任务切换到Handler所在的线程去执行,我们用的最多的地方也就是Handler刷新UI的功能,其实,它还有很多用途,比如子线程中进行消耗的I/O操作,读取文件等,而我们用...

关于Handler的几个问题

1 概述 先思考几个问题: 更新ui为什么只能在ui线程 线程如何创建handler Looper 死循环为什么不会导致应用卡死,会消耗大量资源吗? 子线程有哪些更新UI的方法 2 更新ui为什么只能在ui线程 其实并不是所有情况都只能在ui线程中更新ui,例如在onCreate()、onStart()和onResume()方法中启动子线程更新ui,是可以正常更新...

Android O Binder系列-Binder设计原理(非原创)

一. 前言 这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。 Binder 之复杂远远不是一篇文章就能说清楚的,本文想站在一个更高的维度来俯瞰 Binder 的设计,最终帮助大家形成一个完整的概念。对于应...

Android O Binder系列-ServerManager的启动

frameworks/native/cmds/servicemanager/servicemanager.rc frameworks/native/cmds/servicemanager/service_manager.c frameworks/native/cmds/servicemanager/binder.c 1 概述 ServiceManager是Binder...

设计模式之命令模式

1 概述 命令模式是行为型模式之一。其定义为:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。简单来说,命令是实例化的方法调用。 命令模式是一种回调的面向对象实现,这是一种对命令模式更好的解释。举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行...

关于CountDownTimer调用cancel失效问题分析

1 概述 在做一个功能的时候用到了CountDownTimer,功能需求如下:开启一个10分钟的CountDownTimer,每隔10s调用一次onTick,在onTick判断添加,如果满足条件,则在onTick中调用cancel()方法取消CountDownTimer倒计时,然后马上调用start()开启新的CountDownTimer倒计时重新倒数。测试发现,在CountDownTim...

ADB命令大全

基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s <serialNumber>] <command> 如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,直接使用 adb 。 为命令指定目标设备 如果有多个设备/模拟器连接,则需要为命令指定目标设备。 参数 ...

设计模式之责任链模式

1 概述 责任链模式是行为型设计模式之一,其定义是:使得多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止。 在这种模式中,通常每个接收器包含对另一个接收器的引用。如果一个对象不能处理请求,则它将相同的对象传递给下一个接收者等等。 2 责任链模式的使用场景 多个对象可以处理同意请求,但具体由哪...

设计模式之状态模式

1 概述 状态模式的定义是当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式中的行为是由状态来决定的,不同的状态下有不同的行为。状态模式和策略模式的结构几乎完全一样,但它们的目的、本质却完全不一样。状态模式的行为是平行的、不可替换的,策略模式的行为是彼此独立、可相互替换的。用一句话来表述,状态模式把对象的行为包装在不同的状态对象中,每一个状态对象都有一个共同的...

设计模式之策略模式

1 概述 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化, 这种类型的设计模式属于行为模式。比如之前笔者做的一款app,里面集成了百度地图和谷歌地图的SDK,那么就可以使用策略模式来实现地图类,根据是在国内还是国外来动态选择百度地图还是谷歌地图。 2 策略模式的使用场景 针对同一类型问题的多种处理方式,仅仅...