自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 View绘制流程的开启

上一篇文章《Activity的创建》中我们说到了Activity创建后会调用其onCreate生命周期,而我们的onCreate方法一般这么写 @Override protected void onCreate(Bundle savedInstanceState) { super.onCr...

2020-06-24 00:18:35 33 0

原创 App启动(三)Activity的创建

上一篇我们讲到AMS在被远程调用attachApplication方法后,会在attachApplicationLocked方法里远程调用ApplicationThread的bindApplication创建Application对象。实际上attachApplicationLocked方法不止进...

2020-06-24 00:17:14 45 0

原创 App启动(二)AMS在Application创建过程中的调度

上一篇文章中我们说到ActivityThread通过AMS的attachApplication方法将mAppThread对象关联到了AMS中,并且后面通过mAppThread对Application进行创建、生命周期的管理等。这次我们就研究下它是怎么做到上述这些的。 首先我们继续看Activity...

2020-06-24 00:16:03 43 0

原创 App启动(一)Application的创建

大家都知道Java程序的入口是 main 方法,但在Android中我们只知道App启动从Application开始,而Android是基于Java的,本身也是从main方法开始的,而这个 main方法是在ActivityThread类的。下面我们就看下ActivityThread的main方法是...

2020-06-24 00:15:01 50 0

原创 Activity启动流程

一、创建Application 首先 ActivityThread main()方法 public static void main(String[] args){ ... //初始化Looper Looper.prepareMainLooper(); ......

2020-05-24 22:43:32 50 0

原创 13.RecyclerView

一、什么是RecyclerView RecyclerView介绍 为有限的屏幕显示大量数据的灵活的View ListView的局限 只有纵向列表一种布局 没有支持动画的Api,动画实现复杂 接口设计和系统不一致? setOnItemClickListener setOnItemLongClic...

2020-05-24 21:43:11 50 0

原创 6.自定义View-绘制

绘制的基本要素 自定义绘制的最基本的步骤是,提前创建好Paint对象,重写onDraw(),把绘制代码写在onDraw里面. 一、Canvas.drawXXX() 和 Paint 基础 drawXXX() 方法:在整个绘制区域统一涂上指定的颜色。 Canvas.drawColor(@Col...

2020-05-24 00:13:19 207 0

原创 5.okhttp

简单使用 OkHttpClient client = new OkHttpClient.Builder() .build(); Request request = new Request.Builder() .url(ENDPOIN...

2020-05-22 22:51:41 77 0

原创 4.retrofit

简单使用 新建接口,并用注解声明请求 public interface GitHub { @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributor...

2020-05-19 23:13:55 34 0

原创 3.登录协议Tcp-IPHTTPS

登录和授权的区别 登录:身份认证,确认【你是你】的过程 授权:由身份或持有的令牌确认享有某些权限(例如获取用户信息)。登录实质上的目地也是为了确认权限 在实际的应用中,多数场景下“登录”和“授权”界限是模糊的 HTTP 中确认授权的两种方式 通过Cookie 通过Authorizati...

2020-05-18 23:41:08 101 0

原创 2.加密解密和hash

现在密码学 可以加密任何二进制数据 非对称加密的出现使得密码学有了更广泛的用途:数字签名 对称加密 通信双方使用同一个密钥,对 原数据 使用加密算法配合上密钥加密生成 密文。解密时对 密文 使用加密过程的完全逆过程配合密钥来进行解密 生成原文。 经典算法 DES(56为密钥,密钥太短而被逐渐...

2020-05-18 23:11:00 61 0

原创 1.http的概念、原理及其工作机制

HTTP 的定义 HTTP是一个简单的请求-响应协议,位于TCP/IP协议簇的最顶层–应用层,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出,而消息内容则具有一个类似MIME的格式。 TCP/IP协议簇 参考链接: https:...

2020-05-18 22:33:58 226 0

原创 retrofit设计模式

retrofit 的设计模式 1. 建造者模式 建造者模式的定义是:将一个复杂对象的构造与它的表示分离,使得建造过程可以创建不同的表示 我们来看一下retrofit的构建代码 很明显的建造者模式 2. 门面模式 门面模式要求一个子系统的外部与其内部通信必须通过一个统一的对象进行,而retrof...

2020-01-05 22:09:14 42 0

原创 24-桥梁模式

桥梁模式 一、定义 将抽象和实现解耦,使得两者可以独立的变化 桥梁模式的通用类图 Abstraction是抽象化角色,它的主要职责是定义出该角色的行为,同时保存一个队实现化角色的引用,通常是抽象类;Implementor是实现化角色,他是接口或抽象类,定义角色必须的行为和属性;RefinedAb...

2020-01-05 20:29:57 34 0

原创 23-享元模式

享元模式 一、定义 使用共享对象可有效的支持大量的细粒度的对象 要求细粒度对象,就会使得对象数量多而且性质相近,为了区分,将对象分为两个部分:内部状态与外部状态 内部状态,内部状态是对象可共享出来的信息,存储在享元对象内部并且不会随着环境改变而改变,他们可以作为一个对象的动态附加信息,不必直接存储...

2020-01-05 20:28:24 23 0

原创 22-解释器模式

解释器模式 一、定义 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子 解释器模式的类图 AbstractExpression是抽象解释器;TerminalExpression是终结符表达式,实现与文法中的元素相关联的解释操作,通常一个解释器模式只有一...

2020-01-05 20:26:59 26 0

原创 21-状态模式

状态模式 一、定义 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 状态模式的通用类图如下 State是抽象状态角色,负责对象状态定义,并且封装环境角色以实现状态切换;ConcreteState是具体状态角色,完成本状态的行为管理以及趋向状态管理(本状态如何股过度到其他状态...

2020-01-05 19:13:20 24 0

原创 20-访问者模式

访问者模式 一、定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 通用类图 Visitor是抽象访问者,生命访问者可以访问那些元素,在程序中visit方法的参数定义那些对象是可以被访问的;ConcreteVisitor是具体访问者,它定...

2020-01-05 19:11:40 23 0

原创 19-备忘录模式

备忘录模式 一、定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法 备忘录模式的通用类图如下 Originator是发起人角色,记录当前时刻的内部状...

2020-01-05 18:40:46 23 0

原创 18-门面模式

门面模式 ### 一、定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生 门面模式的类图 Facade是门面角色,此角色...

2020-01-05 18:36:24 16 0

原创 17-观察者模式

观察者模式 一、定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的通用类图 Subject是被观察者,它必须能够动态地增加、取消观察者。它一般仅仅完成管理观察者并通知观察者的职责; Observer是观察者;concret...

2020-01-05 18:35:07 15 0

原创 16-组合模式

组合模式 ### 一、定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 组合模式的通用类图 Component是抽象构件角色,定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性。 Leaf是叶子构件,其下再没有其他的分支,是遍历的...

2020-01-05 18:31:38 18 0

原创 15-迭代器模式

迭代器模式 一、定义 提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节 迭代器模式(Iterator Pattern)目前已经是一个没落的模式,基本上没人会单独写一个迭代器,除非是产品性质的开发 迭代器的通用类图 Iterator是抽象迭代器,负责定义访问和遍历元素的接口; C...

2020-01-05 18:29:58 22 0

原创 14-适配器模式

适配器模式 一、定义 将一个类的接口变换为客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式又叫做变压器模式,也叫做包装模式(Wrapper) 适配器模式的类图 Target是目标角色,该角色定义把其他类转换为何种接口,也就是我们的期望接口;Ad...

2020-01-05 18:28:47 17 0

原创 13-策略模式

策略模式 一、定义 定义一组算法,将每个算法搜封装起来,并且使他们之间可以互换。 策略模式的通用类图 Context是封装角色,起承上启下作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化;Strategy是抽象策略角色,抽象策略算法,通常为接口,定义每个策略或算法必须具有的方法和属性...

2020-01-05 18:27:33 15 0

原创 12-装饰模式

装饰模式 一、定义 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 装饰模式的类图 Component为抽象构件,是一个接口或抽象类,定义最核心的对象,也就是最原始对象;ConcreteComponent 为具体构件,是抽象...

2020-01-05 18:26:00 19 0

原创 11-责任链模式

责任链模式 一、定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链条传递该请求,直到有对象处理它 责任链的通用类 责任链模式的核心在“链”上,“链”是由多个处理者ConcreteHandler组成 责任链的通用源码 抽象处理者 ...

2020-01-05 18:24:03 18 0

原创 10-命令模式

命令模式 一、定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能 命令模式的通用类图 Receive接收者角色是干活的角色,命令传递到这里是应该被执行的;Command命令角色,需要执行的命令都在这里声明;Invoker...

2020-01-05 18:20:22 25 0

原创 09-中介者模式

中介者模式 一、定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互 中介者的通用类图 Mediator是抽象中介者角色,定义统一的接口,用于各同事之间的通信;Concrete Mediator是具体中介者角色,通过协调...

2020-01-05 18:18:59 29 0

原创 08-原型模式

原型模式 一、定义 用原型实例指定创建的对象,并且通过拷贝这些原型创建新的对象。 原型模型的核心是一个clone方法,通过这个方法进行对象的拷贝 原型模式的通用类图 原型模式通用源码 public class PrototypeClass implements Cloneable{ //覆写父...

2020-01-05 18:16:43 24 0

原创 07-代理模式

代理模式(委托模式) 一、定义 为其他对象提供一种代理以控制对这个对象的访问 代理模式的通用类图 Subject 为抽象主题角色,是一个普通的业务逻辑类型, RealSubject为具体主题角色,也叫做委托角色,被代理角色,是业务逻辑的具体执行者。 Proxy为代理主题角色,也叫做委托类,代理类...

2020-01-05 18:14:30 29 0

原创 06-建造者模式

建造者模式(生成器模式) 一、定义 将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示 建造者模式通用类图 建造者模式源码 产品类 public class Product { public void doSomething(){ //独立业务处理 } } ...

2020-01-05 18:04:24 19 0

原创 05-模板方法模式

模板方法模式 一、定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义带算法的某些特定步骤。 模板方法的通用类图如图 模板方法仅仅使用了java的继承机制。其中AbstractClass叫做抽象模板,它的方法分为两类 基本方法 有子类实现的方...

2020-01-05 18:02:39 21 0

原创 04-抽象工厂模式

抽象工厂模式 一、定义 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类 抽象工厂方法的通用类图如下 抽象工厂模式是工厂方法模式的升级版本,应用于多个业务品种、业务分类产生对象的情况。 下面为通用源代码类图与其代码 通用源代码类图 有两个相互影响的产品线(产品族,即不同的产...

2020-01-05 17:40:27 22 0

原创 03-工厂方法模式

工厂方法模式 ### 一、定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类 工厂方法模式的通用类图如下 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vTEr6Pt-1578216075246)(03-工厂方法模式.a...

2020-01-05 17:25:43 28 0

原创 02-单例模式

单例模式 一、定义 确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例 二、优点 减少内存开支。特别是一个对象需要频繁的创建、销毁时,并且创建或销毁时性能有无法优化。 减少了系统的性能开销。当一个对象的产生需要较多的资源时,如读取配置,产生其他依赖对象等。 避免对资源的多重占用,例...

2020-01-05 17:20:29 15 0

原创 01-设计模式-6大设计原则

设计模式-6大设计原则 一、单一职责原则(SRP) 定义:应该有且只有一个原因引起类的变更 二、里氏替换原则(LSP) 定义:所有引用基类的地方必须能透明地使用其子类的对象。 即只要父类出现的地方子类就可以出现,而且替换为子类也不会产生任何错误和异常,使用者可能根本不需要知道是父类还是子类,但是反...

2020-01-05 17:18:46 13 0

原创 简单实现自定义横向滚动选择View优化

之前接到一个优化需求,ui嫌弃横向滚动卡顿,提了优化需求,我看下自定义view是来自郭霖的简单实现自定义横向滚动的文章,为读过的请看原文 现在发现的问题是 当前页面设置了最多显示3个,而原文只有滑动超过一个view的单位宽度时才切换,就导致切换到下一个变得很难,我将其修改为超过单位宽度的一半则自...

2019-10-14 11:49:29 91 0

原创 ConstraintLayout子View android:minHeight 无效解决

当父类是ConstraintLayout时 子view设置 android:layout_height="wrap_content" android:minHeight="40dp" 无效,疑似为自定义View没有做minHeight的适配,Tex...

2019-10-14 11:09:49 387 0

原创 Bitmap debug 时 预览其图片

1.首先找点Bitmap的变量,直接在变量出鼠标悬停或者,将Bitmap变量添加到watches里,如下 2.找到Bitmap变量 右边的 Viw BItmap,点击此处即可预览改Bitmap,如下 ...

2019-04-28 10:24:26 554 0

提示
确定要删除当前文章?
取消 删除