- 博客(27)
- 收藏
- 关注
原创 安卓组件化学习
随APP的不断更新,代码也逐渐复杂,开发效率下降,单一工程下代码耦合严重,当需要调试的时候非常耗时,单独修改一个模块无法单独测试。组件化去除模块的耦合,使得每个模块可以独立当APP存在,对于其他模块没有直接的依赖关系。此时业务模块就成为了业务组件。而除了业务组件还有抽离出来的业务基础组件,提供业务组件使用,但不是独立的业务,例如:分享组件,广告组件;还有基础组件,即单独的基础功能,与业务无关,例如 图片加载、网络请求等。这些后面会详细说明。组件化带来的好处。
2022-11-17 22:16:52
806
原创 Okhttp源码5:缓存相关
这是OKHttp的源码分析第五篇,主要分析的是OKHttp的缓存相关。在前面的文章中,我们也简单写过OKHttp的缓存相关。在 Android之网络请求2————OkHttp的基本使用 中写了如何使用缓存。在Android之网络请求6————OkHttp源码3:拦截器链 中写了缓存拦截器,并在其中分析了缓存策略相关的源码。在这里我们来详细的分析一下OKHttp的缓存相关。OKHttp的缓存部分,一个是设置缓存这一方面由用户(程序员自己调用),还有进行缓存的时机,在缓存拦截器中发生。
2022-11-14 10:32:32
615
原创 OkHttp源码4:网络操作
主要侧重于整个过程的网络操作至此,分析完了OKHttp的网络请求部分,总结一下,在重试拦截器中获得Address和StreamAllocation(负责根据请求创建连接),在连接拦截器中获得连接,最后在网络进行发送请求头,请求体,获得响应头,获得响应体。值得注意的是连接的获得 即:如果有连接,直接用没有可用的连接,第一次去连接池中查找,找到后直接用没有找到,补充路由信息,在连接池中二次查找。依然没有找到,创建新连接,然后连接server,将其放入到连接池中。
2022-11-13 20:30:51
1632
原创 OKHttp源码3:拦截器
从上面的代码可以看出了,先获取原请求头,然后在请求中添加请求头,然后在根据需求,决定是否要填充Cookie,在对原始请求做出处理后,使用chain的procced方法得到响应,接下来对响应做处理得到用户响应,最后返回响应。关于连接拦截器更多的内容,可以看下一篇博客,okHttp的网络操作部分。这里我们只是做一个简单的分析并不深入其中,我们继续来看下一个拦截器。即CallServerInterceptor拦截器。
2022-11-10 17:37:19
1017
原创 Okhttp源码2:发送请求
OkHttp采用Dispatcher技术,类似于Nginx,与线程池配合实现了高并发,低阻塞的运行Okhttp采用Deque作为缓存,按照入队的顺序先进先出OkHttp最出彩的地方就是在try/finally中调用了finished函数,可以主动控制等待队列的移动,而不是采用锁或者wait/notify,极大减少了编码复杂性。
2022-11-09 12:13:03
1155
原创 Okhttp源码1:框架
接口层接收用户的网络访问请求(异步/同步),发起实际的网络访问请求。连接层顾名思义就是负责网络连接,在连接层有一个线程池,统一管理所有Socke连接,当用户发起一个新的网络请求时,OKHttp会在连接池中找到是否有符合要求的连接,如果有则直接通过该连接发送网络请求;否则新创建一个网络连接。Call描述了一个实际的访问请求,用户的每一个网络请求都是一个Call实例,Call本身是一个接口,定义了Call的接口方法,在实际执行过程中,OkHttp会为每一个请求创建一个RealCall,即Call的实现类。
2022-11-08 21:16:14
231
原创 Android之网络请求2————OkHttp的基本使用
okhttp是一个第三方库,用于Android中网络请求这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary)。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。
2022-11-08 11:33:09
5835
原创 安卓网络请求1————Http协议
http是超文本传输协议的缩写(Hyper Text Transfer Protocol),是从万维网服务器传送到本地浏览器的传送协议。
2022-11-07 20:02:23
2525
原创 Android的消息机制
Android的消息机制也是Handler机制,主要的作用是用来在不同线程之间的通信,通常使用在子线程执行完成一些耗时操作,需要回到主线程更新界面UI时,通过Handler将有关UI的操作切换到主线程。
2022-10-27 20:45:30
579
原创 虚拟机类加载机制
通常情况下,我们都是直接使用系统类加载器。但是,有的时候,我们也需要自定义类加载器。比如应用是通过网络来传输 Java类的字节码,为保证安全性,这些字节码经过了加密处理,这时系统类加载器就无法对其进行加载,这样则需要自定义类加载器来实现。自定义类加载器一般都是继承自 ClassLoader类,从上面对 loadClass方法来分析来看,我们只需要重写 findClass 方法即可。自定义类加载器的核心在于对字节码文件的获取,如果是加密的字节码则需要在该类中对文件进行解密。
2022-10-26 20:41:48
87
原创 安卓 动画的深入分析
除了系统提供的四种View动画,还可以自定义动画View动画。自定义View动画只需要继承Animation抽象类,然后重写它的initialize和applyTransformation方法,在initialize方法中做初始化处理,在applyTransformation中进行相应矩阵变换即可。
2022-10-26 11:01:28
1261
原创 安卓IPC机制
IPC是Inter-Process Communication的缩写,含义是进程间通信,用于两个进程之间进行数据交互的过程,任何操作系统都有IPC机制,但不同的操作系统有着不同的通信方式,Android系统是一种基于Linux内核的移动操作系统,Linux的跨进程通信主要通过管道、共享内存、内存映射等实现的,但Android有自己的进程间通信机制,最具代表性的就是Binder。线程:CPU调度的最小单元,是一种有限的资源。
2022-10-24 21:18:18
2172
原创 Java 存储类别 链接和内存管理
第12章 存储类别 链接和内存管理存储类别注意 *pt不是标识符因为他不是一个名称。int * pt=&entity指定对像的值称为左值。存储期指对象保留了多长时间。标识符用于访问对象,可用作用域和链接描述,作用域和链表表明了程序哪部分可以使用它。不同的存储类别又不同的存储期和链表。作用域作用域描述程序可访问标识符的区域。作用域可以是块作用域 函数作用域 函数原型作用域或文件作用域。块 是指一对花括号括起来的代码区域。链接分为 外部链接 内部链接 无链接无链接:
2020-12-13 17:37:23
107
原创 ThoughtWorks西邮联合创新实验室第一次排位赛
ThoughtWorks西邮联合创新实验室第一次排位赛题目Sky题干熊熊学长从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。熊熊学长非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位
2020-11-30 18:42:30
136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人