- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 理解Binder
目录1.面向对象的Binder2.Binder 通信模型2.1.Binder驱动2.2.ServiceManager与实名Binder2.3.Client 获得实名Binder的引用2.4.匿名 Binder3.Binder内存映射和接收缓存区管理4.Binder 接收线程管理5.数据包接收队列与(线程)等待队列管理6.总结1.面向对象的BinderBinder是Android系统进程间通信(IPC)(Internet Process Connection)方
2021-01-25 15:04:02
218
原创 Glide 4.11.0
目录概述原理浅析with:创建RequestManagerload:创建RequestBuilderinto:创建Request重要类:1.Glide:2.GlideBuilder:3.RequestManagerRetriever:4.RequestManager:5.RequestBuilder:6.Request:7.SingleRequest:8.Target:9.AppGlideModule10.MemorySizeCalculato
2021-01-19 12:35:28
1721
原创 SQL语句汇总
数据库SQL1.create(1)创建数据库create database dbname(2)创建数据库表create table tableName(col1 type1[not null][primary key], col2 type2[not null](3)根据已有的表创建新表create table tab_new like tab_old(使用旧表创建新表)create table tab_new as select col1,col2……from tab_
2020-07-05 15:00:24
283
原创 App 数据缓存方案
策略1:规则缓存(单纯App本地缓存)App根据接口数据特性,本地规定缓存以及更新数据策略(例如:登录后更新数据)。即特定场景下指定特定数据源(local,remote)。有些数据不会经常变更,例如用户权限,可以规定在特殊场景下触发Request获取remote数据,其余场景下从本地缓存获取。减少网络访问次数,数据实时性达不到。策略2:时效缓存(单纯App本地缓存)App(或者服务端)根据接口数据特性,规定特定接口缓存时效。即根据不同接口,设置Cache-Control的不同时长。同时根据网
2020-07-02 17:24:12
2588
原创 RxJava 五:场景模拟
目录1.计算一段时间内的平均值2.优化搜索联想功能3.优化多次重复点击4.RxJava + Retrofit + OkHttp5.页面轮询请求6.接口重新请求(retry)7.本地验证输入有效性8.优先加载本地缓存,再读取网络数据方案一:concat方案二:concatEager方案三:merge方案四:publish + merge9.网络请求中发现token过期后刷新token并重新发起请求1.Token缓存(SharedPreferences)
2020-05-25 14:26:54
262
原创 RxJava 四:RxJava 3 操作符(Operators)
操作符(Operators)的实质是函数式编程中的高阶函数,是对响应式编程的各个过程拆分封装后的产物。目的在于灵活操作数据流。
2020-05-19 18:28:33
731
原创 RxJava 三:RxJava 3 线程调度
目录1.Scheduler类型2.Scheduler线程控制接口:3.Schedules线程自由切换4.延伸:利用subscribeOn() 指定doOnSubscribe()执行线程RxJava 默认事件的产生和消费都是在同一个线程的。也就是说,默认实现的只是一个同步的观察者模式,即:在哪个线程调用subscribe()(订阅),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件,此时数据发送和数据接收是一一对应的,即发送一个,接收一个,再发送一个,再接收一个……。如...
2020-05-19 18:14:49
1558
原创 RxJava 二:RxJava 3 观察者模式(原理解析)
1.RxJava 3JavaDochttp://reactivex.io/RxJava/3.x/javadoc/https://github.com/ReactiveX/RxJava/wiki/What's-different-in-3.0添加依赖implementation 'io.reactivex.rxjava3:rxjava:3.x.y'implementation 'io.reactivex.rxjava3:rxandroid:3.x.y'Java 8(来源于官方文档)
2020-05-19 11:40:11
1126
原创 RxJava 一:RxJava X 简单理解及基本概念
目录1. RxJava X2. 观察者模式3. 函数响应式编程结构3.1.响应式编程(Reactive Programming)3.2.函数式编程(Functional programming)3.3.函数响应式编程(Functional Reactive Programming:FRP):4. 背压(Backpressure)1. RxJava XRx是ReactiveX的简写,后者是Reactive Extensions的缩写,Rx是一种编程模型,用于方便处理异.
2020-05-19 11:23:12
391
原创 Android OkHttp
前言OkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。•支持HTTPS/HTTP2/WebSocket(在OkHttp3.7中已经剥离对Spdy的支持,转而大力支持HTTP2)•内部维护任务队列线程池,友好支持并发访问•内部维护连接池,支持多路...
2020-01-21 10:57:17
641
原创 EventBus 3.1.1(线程间!!!)
目录一 EventBus 3.1.11.1.简介1.2.实现1.2.1.配置(EventBusBuilder)1.2.2.声明事件类型1.2.3.在订阅者类中定义消息处理方法(事件回调方法)1.2.4.在订阅者类中注册解绑EventBus1.2.5.被订阅者类发送事件对象1.3.线程模型(ThreadMode)1.3.1.ThreadMode.POSTING...
2019-11-01 18:49:57
477
原创 Android App Bundle【转发】
【转发】Android App Bundle是Google最新推出的Apk动态打包,动态组件化的技术,与Instant App不同,AAB是借助Split Apk完成动态加载,使用AAB动态下发方式,可以大幅度减少应用体积。原理:资源选择性加载;动态下发组件库优势:(1)Size更小(2)安装更快(3)支持动态发布限制:仅限于使用Android新应用发布格式和Googl...
2019-10-22 17:56:49
535
原创 Kotlin学习笔记
小白学Kotlin,认真做笔记,认真做总结,感谢:https://blog.csdn.net/sino_crazy_snail/article/category/7450715/1?https://www.jianshu.com/nb/2528012https://www.cnblogs.com/Jetictors/p/9227498.html#首先感谢三位博主的精彩文章,我看...
2019-10-18 18:29:21
834
原创 Android网络请求 —— Token拦截器(保证多个请求同时执行时候,成功拦截)
在App执行网络请求的场景中,经常需要用到Token作为合法访问身份识别码,设置到Header中传递给后台。且token往往是有效期的,这个时候,就需要用到 OkHttp的拦截器,对请求是否需要携带token做验证,并对token是否有效做验证,且在必要的时候重新获取合法token。直接进入正题,token拦截器一共做了两件事情:1,对请求接口做判断,是否需要携带token;2,对token合...
2019-03-05 17:34:16
5098
1
原创 Android 线程&线程池
目录一.线程形态1.1.HandlerThread1.1.1.简介1.1.2.适用场景1.1.3.DEMO1.2.IntentService1.2.1.源码解析1.2.2.DEMO1.2.3.总结1.3.RxAsyncTask二.线程池ThreadPoolExecutor2.1.为什么要用线程池2.2.线程池逻辑构成2.3.线程池参数2....
2019-03-01 15:42:53
278
原创 Android app编码规范
一.命名规范1.1.命名原则1.所有编程相关命名严禁使用拼音头字母缩写!2.所有编程相关命名严禁使用不规范的英文缩写!3.所有编程相关命名严禁使用拼音与英文混合的方式!4.所有编程相关命名严禁使用下划线或美元符号开始,或者以下划线或美元符号结束!1.2.包名1.2.1.命名规则1)小写2)单数(包名单词统一使用单数形式)3)点分隔符之间有且仅有一个自然语义的...
2019-02-26 16:12:17
1362
原创 Android工程架构设计:组件化三(组件间通讯机制)
目录一,组件路由(针对业务组件生命周期管理)1.1.library_router定义组件生命周期最上层接口:1.2.上层业务层组件根据自身实际情况提供接口实现类:1.3.上层业务组件在module / assets目录下提供配置文件1.4.library_router定义组件信息描述:1.5.library_router /ModuleRouter扫描assets目录,...
2019-02-19 17:26:42
357
原创 Android工程架构设计:组件化二(项目实战)
目录 一,业务拆分1.1.man1.2.登录1.3.电站 ......1.4.告警 ......1.5.工单 ......1.6.消息中心1.7.设置二,组件化框架设计搭建架构图:工程图:2.1,app主框架(app)2.2,业务层组件(module)2.3,业务功能组件(module_library)2.4,基础组件(libr...
2019-02-18 18:33:30
281
原创 Android工程架构设计:组件化一(理解)
当项目发展到一定程度,随着人员的增多,代码越来越臃肿,这时候就必须进行模块化(组件化)的拆分。一.模块化,组件化1.1.模块化(module)模块化可以理解为“业务框架”或者“业务模块”。是指当我们的代码特别臃肿的时候,把项目里同一类型的功能逻辑进行需求性的拆分、整合、封装代码,分而治之。目的在于隔离代码,封装业务,具有高内聚性。模块之间的依赖关系,可以通过路由器(推荐ARoute...
2018-12-13 11:23:37
303
原创 Android深入理解:Handler + Looper + Message
声明:本文是一篇对Handler相关内容的整理(经过相当一段时间,几次内容增减),有相当部分内容来源网络,其中融入部分作者本身的理解,并加以整理。如有涉及到哪位老师的原作,在此深表感谢!目录Handler + Looper + Message:生产者 + 消费者 + 仓库(任务队列)1.Handler(生产者add)1.1.Handler创建对象1.2.Handler发送...
2018-10-18 18:29:08
311
原创 Android工程架构设计:Base Library(基层MVP框架)基于EventBus
Base Library部分把App中Application,UI(activity,fragment)公用方法重新封装成模板方法,并开放对子类的扩展。同时融入mvp设计思想,封装成基于mvp的基层架构体系。目录1,IApplication(接口):2,BaseApplication(抽象基类)2.1规定Application中行为的执行规则(模板方法模式)2.2 实...
2018-10-16 14:53:45
1733
原创 Android工程架构设计:项目群架构设计
我们写代码的时候,经常会把多个类相同的功能代码(方法)抽出来封装成父类,各个子类继承父类再做扩展。随着公司开发维护的项目越来越多,你会发现各个项目中有一些通用的可复用的代码或者模块,考虑到资源替换,工程复用等问题,需要把公共部分剥离出来。公司名为sky_dreaming,目前公司准备开发app1,app2,app3三款应用。把众多项目中公共的部分剥离出来,整理成独立的共享库common(可...
2018-10-12 11:33:59
982
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人