自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (23)
  • 收藏
  • 关注

原创 架构师学习--手写Glide之磁盘缓存

前面学习了活动缓存和内存缓存,本章将继续学习磁盘缓存,在内存缓存中我们使用了最少使用算法,并且android也提供了LruCache这个类供我们使用,同样的磁盘缓存也是使用了这个算法,但是遗憾的是android没有提供磁盘缓存的类。所以,我们不得不从github上下载大神的DiskLruCache文件了。下载地址,解压得到三个文件,添加到我们的项目中即可。磁盘缓存类1、初始磁盘缓存类DiskL...

2019-08-30 17:54:21 231

原创 架构师学习--手写Glide之内存缓存

之前一篇文章带大家学习了活动缓存,本章将继续学习内存缓存。首先使用了LruCache算法(最近使用)缓存策略,什么是LruCache算法呢?这里对算法内部具体实现不做研究。先看一下android提供的源码:一、LruCache内部其实就是使用了LinkedHashMap的机制,设置为true,表示激活使用排序。使用排序的规则是如何呢?如下图:总之一句话:只要集合中某个元素被使用了,它将会...

2019-08-30 17:17:09 173

原创 架构师学习--手写Glide之活动缓存

Glide是目前市场上比较流行的图片加载框架,使用起来很方便,一堆链式调用就可以加载一张网络图片了。第一次加载会比较慢,当我们下次再次加载这张图片的时候,速度将会质的飞跃。这是因为它的图片缓存机制做的非常好。从源码中可以看出,他会用了三级缓存策略,分别是:活动缓存、内存缓存、磁盘缓存。本章将会讲解活动缓存是如何进行设计的一、缓存策略说到缓存策略,就不得不说一下,四种引用的区别了:强引用比...

2019-08-30 16:40:45 806 1

原创 架构师学习--okhttp3连接池实现

首先我们需要明白,okhttp比其他网络请求框架的优势在哪里?当然最重要的就是他对传输层的Socket进行了进一步的封装。所谓的封装,就是拿到服务器最原始的数据流,进行解析,返回给用户。大家需要明白一点,socket的连接是需要消耗资源的,如果每一次网络请求都去创建一个socket,显然是不合理的。所以okhttp就引出了连接池的概念。所谓的连接池就是为了复用socket,比如我们请求一个地址,如...

2019-08-29 16:47:48 953

原创 架构师学习--okhttp3原理解析

okhttp是目前最流行的网络框架,为什么这样说呢?本文将带领大家逐步解密。一、使用想必大家在项目中都是如下使用的,这里以一部请求为例:这里可以看出发出一条请求,离不开这几个类:OkHttpClientRequestCallCallback下面就对这四个类逐个击破。二、常用类介绍1、OkHttpClient这个类使用构造者模式,通过这个类我们能够设置分发器Dispatc...

2019-08-23 15:57:24 432

原创 架构师学习--数据库升级

我们在平常项目中难免会碰到这样的情况,比如我想在用户表中增加一个字段,来采集用户行为信息。比较常规的做法可能就是,重新测试打包上架,然后提示用户更新app。但是如果用户不更新呢?这样我们就无法采集到这个字段,另外重新打包上架的时间成本也是昂贵的,往往会导致用户的流失。那么有没有一种方法,类似于热修复,在用户无感知的情况下完成这样的数据库表升级呢?其实目前比较主流的做法就是配置xml文件的方式,用户...

2019-08-22 11:39:52 149

原创 架构师学习--数据库分库

学习本文内容,需要先去自行阅读架构师学习–数据库框架的基本搭建(增删改查)这篇文章,因为代码都是基于之前的基础上进行开发的。开始之前,我提出几个问题:什么是分库?为什么要分库?如何分库?一、什么是分库所谓的分库就是创建多个db数据库,比如项目中可以有qb.db。当然也可以有1.db、2.db等,根据自己的需求而定,一般小中型的项目是很少用到分库的,比如像淘宝、QQ等这样的大型项目,不可避免的会...

2019-08-21 17:34:05 249

原创 架构师学习--数据库框架的基本搭建(增删改查)

本文主要实现如何搭建一套自己的数据库框架。包括数据库的创建、表的创建、数据的增删改查功能、以及数据库如何实现分库、如何进行更新。一、创建数据库及生成数据库表如何使自己的数据库表的创建以更加优雅的方式,我们就需要注解的方式实现。1、创建表名注解类Table2、创建表中字段注解类FieldParams3、创建实体类中不需要保存到数据库的字段注解类Exclude4、创建数据库表实体类S...

2019-08-21 15:44:40 1315

原创 架构师学习--插件化之Hook方式(5.0版本~9.0版本)

首选,当我们启动一个activity,在没有在配置文件注册的前提下,会抛出以下异常:一、异常分析那么首先我们需要分析这个异常是在哪里出现的?源码跟踪如下:在checkStartActivityResult()方法中就能看到上面的异常信息。那么如何才能不让系统报这个异常呢,那就需要在这个方法执行之前做些手脚了。查看系统源码,在执行checkStartActivityResult()方法之前...

2019-08-13 17:01:54 513

原创 架构师学习--插件化之占位式静态注册广播(apk解析原理)

首先需要知道静态广播是在什么时候注册的?带着这个疑问就不得不分析apk的解析原理。一、apk解析原理1、静态广播注册首先,手机在启动的时候,会把所有的apk的都安装一遍,然后立马就会解析所有apk的配置文件信息,如果配置文件中有广播,就会把它注册。2、apk安装过程会产生3个目录data/app : apk的放置目录data/data/包名/ :应用所属目录,也就是数据库、sp等保存...

2019-08-09 17:51:05 277

原创 架构师学习--插件化之占位式(插桩式)

什么是插件化?插件化开发是将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk。插件apk是不需要安装的,运行在手机上的是宿主apk,当需要插件内容的时候,就需要通过宿主apk先加载插件,然后才能操作插件,也就是说插件是没有独立运行环境的,必须依赖宿主的环境。学习插件化,需要了解宿主、插件和标准的关系宿主:运行在手机上的apk插件:服务器上下载的apk包,没有...

2019-08-08 17:40:23 276

原创 架构师学习--组件化开发之管理类

前面介绍到组件化的ARouter路由设计和参数传递设计。只是功能进行了实现,没有考虑到进一步的封装,比如界面传参,之前是用如下方式实现:new Main_MainActivity$$Parameter().loadParams(this);这样看起来会比较难以理解,因为使用者并不知道生成了Main_MainActivity$$Parameter()这个类。同样的界面跳转之前使用如下方式: ...

2019-08-01 10:18:54 250

原创 设计模式--责任链模式

什么是责任链模式呢?所谓的责任链模式就是使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。比如现在比较流行的okHttp网络请求框架就是采用了责任链模式。下面将手写一个简易的责任链。一、IChain这是一个接口,所有的子链都需要实现该接口。isConsume:当前链条是否消费chain:责...

2019-08-26 17:58:18 239

原创 浅谈android中的线程池

什么是线程池?顾名思义,就是存放线程的池子,也就是说一个线程池中可以存放多个线程。那为什么要设计出来线程池呢?最主要的原因就是线程复用的原因。如果没有线程池,我们每次网络请求都需要new Thread。如果有100个任务同时执行,这样就会导致资源的开销非常大,而对于线程池来说。我们只需要把100个任务加入其中即可,它内部会维护一个队列。一、线程池的类属关系最原始的线程池类是一个接口Execut...

2019-08-23 17:41:58 177

原创 自定义控件之仿豆瓣笑脸进度加载

最近看到豆瓣的笑脸loading很有意思,看一张效果图:下面分析一下如何实现这样的效果:默认状态是一张笑脸的状态(一个嘴巴,两个眼睛,默认状态)开始旋转,嘴巴追上眼睛(合并状态)追上以后自转一周(自转状态)然后逐渐释放眼睛(分离状态)回到初始笑脸状态(默认状态)一、默认状态首先需要确定好嘴巴和眼睛的初始位置,我这里的初始化嘴巴是一个半圆,在横轴下方。眼睛分别与横轴夹角60度,...

2019-08-05 16:51:32 377

mockserver1.zip

mockServer模拟服务器数据请求,使用java命令启动服务器,数据源配置在json文件中,精准匹配数据的请求与返回。

2020-05-29

mockServer+nodejs+express.zip

mockServer模拟服务器请求,方便移动端优先开发,需要配合nodejs启动服务,只需要本地配置好json格式的数据格式即可,使用起来很方便

2020-05-29

LazyFragment.zip

分析v4版本和androidX版本懒加载机制原理,并实现不同版本的懒加载实现。可以直接拿到项目中使用

2020-03-27

MyMvvmMaster.zip

使用MVVM+rxjava2+retrofit+ARouter实现自己的一套app框架,使用起来简单方便。

2020-03-24

MVVM_Adapter.zip

代码实现了MVVM如何与RecyclerView记性绑定实现,列表的加载,点击,以及布局的加载。初学者可以看看,代码提供思路,不保证没有bug

2020-03-23

permissionDemo.zip

6.0系统手机开始,申请权限需要动态申请,市面上的框架也比较多,官方提供的RxPemission。也有使用发射实现的。我这个框架采用了AspectJ+注解的形式完成。使用起来很方便

2019-12-31

MyHuffman.zip

代码支持huffman对图片的压缩,使用jni方式。实现图片的无损压缩,压缩比例20%~90%,可调整图片的压缩质量

2019-12-17

okhttp中连接池实现

代码中包含okhhtp中连接池的设计,包含连接对象的添加,连接对象何时被移除。

2019-08-29

android数据库框架

代码主要提供了一套数据库操作的框架,包括增删改查、数据库的分库、升级等功能。便于扩展

2019-08-21

hook式插件化,兼容5.0~9.0

代码主要处理插件化开发,使用hook的方式,支持5.0到9.0系统,只是一个demo。

2019-08-13

占位式插件化

使用占位式插件化,能够实现插件的安装,及宿主到插件的跳转,插件内部跳转,启动插件服务,注册动态广播和发送广播。另外,对插件中静态广播的注册也做了实现

2019-08-08

组件化ARouter开发完整代码

组件化ARouter开发完整代码,模块之间完全解耦,支持参数注解,类注解

2019-08-01

安卓组件化开发架构,设计思路,代码大全

使用javapoet完成组件化架构设计,纯java代码,兼容性高

2019-07-29

app动态换肤,适配5.0到9.0

app在内置换肤的基础上实现动态换肤,效率高。比普通的换肤效率快至少7倍。兼容性高5.0-9.0都可以使用

2019-07-25

动态换肤,适配5.0到9.0

app在内置换肤的基础上实现动态换肤,效率高。比普通的换肤效率快至少7倍。兼容性高5.0-9.0都可以使用

2019-07-25

app内置换肤,效率高,适配高

用最简单的方式实现app内置换肤,支持自定义控件,运行效率高

2019-07-24

x264与rtmpdump集成.java

里面包含了如何把x264与rtmpdump集成到android studio中

2019-05-30

2.2.4-Shell脚本编写与执行编译ffmpeg库.zip

linux编译ffmpeg,需要首先配置ndk环境。编译静态库需要脚本执行,详解地址https://blog.csdn.net/qinbin2015/article/details/90648208

2019-05-29

bzip2-1.0.5-src.zip

增量更新android端cmake配置需要改文件夹下的一些文件。

2019-05-28

android各种布局的下拉刷新上拉加载更多

属于android工具包,包含scrollview,listview,spandlistview,gridview等布局的下拉刷新,下拉加载更多

2016-01-12

Imageloder加载网络图片,点图片看大图,可缩放

Imageloder加载网络图片,点图片看大图,可缩放。欢迎点评

2015-06-26

复选框多选Demo

包括一个全局的全选按钮,每一项的全选按钮,单选按钮。实现类似淘宝购物车选中功能

2015-06-24

仿淘宝评价图片上传,最多9张

功能实现仿淘宝评价图片上传,点击“+”图标添加图片,最多9张。点击已添加的图片删除图片,框架已搭好。数据可以自己填充。

2015-06-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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