Vane's Blog

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 策略模式的使用场景 针对同一类型问题的多种处理方式,仅仅...

设计模式之工厂模式

1 概述 工厂模式是创建型设计模式之一。工厂模式是一种结构简单的模式, 此模式提供了创建对象的最佳方法之一。 在工厂模式中,我们没有创建逻辑暴露给客户端创建对象,并使用一个通用的接口引用新创建的对象。 工厂模式又有以下几种细分的模式: 简单工厂模式 工厂方法模式 抽象工厂模式 2 简单工厂模式 简单工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。...

设计模式之原型模式

1 概述 原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。原型模式是为了解决一些不必要的对象创建过程。 原型表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致性的对象,这个过程就是所谓的“克隆”。原型模式多用于创建复杂的或者构造耗时的实例。 2 使用场景 类初始化需要消耗非常多的资源,如数据、硬件资源等 通过个过new产...

设计模式之Builder模式

1 概述 Builder模式也成为建造者模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离。 很多开源库创建一个对象时,都是利用Builder模式来构建的,比较 okHttp开源库,如 构造Request对象 如下: Request request = new Request.Bui...