RecyclerView源码分析之四级缓存机制

众所周知,RecyclerView在android中实现列表是性能非常好的,那么性能好的原因在哪里呢?关键还是在它在处理view时的回收和复用。列表在滑动的时候,会进行itemView的回收和复用,那么我们就从滑动回调即onTouchEvent来入手分析。 滑动时函数调用链 四级缓存机制 mC...

2019-06-17 16:00:26

阅读数 1315

评论数 2

android开发模式/框架比较分析:从MVC到MVP到MVVM到Clean

开发模式对比分析 MVC MVP MVVM MVPVM CLEAN 修改 3 4 5 5 5 新增 3 5 4 5 5 复用 3 4 4 4 5 单元测试 3 4 5 5 4 UI测试 4 4 4 4 4 学习成本 3 4 5 5 5 代码复杂度 3 4 ...

2019-05-13 14:30:02

阅读数 2628

评论数 5

史上最全android保活方案及比较分析

史上最全android保活方案及比较分析 方案对比 方案名称 方案简述 优点 缺点 适用情况 1像素保活 在屏幕关闭时打开一个1px的activity,屏幕亮时关闭此activity 易于实现 锁屏时才能提高优先级,不稳定 适用于搭配其他方案一起使用 前台服务保活 启动一个前台...

2019-04-27 14:52:49

阅读数 2565

评论数 3

glide溯源

   最近有时间看了glide的源码,于是想写一下关于glide源码的一些解释和说明,一方面供后来者更好的去阅读glide源码,一方面也为自己的学习做一个记录,本次glide源码分析基于glide4.8.0版本(下载地址),以下是glide溯源的系列文章:    glide溯源之网络请求管理 ...

2018-10-10 11:16:26

阅读数 766

评论数 0

glide溯源之网络请求管理

glide溯源系列文章 一、相关类简介 1. RequestManager:用来管理请求的类; 2. Request -> SingleRequest:一个请求,持有一个Engine; 3. Engine:负责加载任务,管理活跃、已缓存资源,一个Engine持有一个Job...

2018-09-21 09:41:26

阅读数 942

评论数 1

glide溯源之线程池

glide溯源系列文章 一、 相关类 1. GlideExecutor 二、几个重要的线程池 1. 磁盘缓存线程池   //磁盘缓存线程池大小默认是1 private static final int DEFAULT_DISK_CACHE_EXECUTOR_THREADS = 1; p...

2018-09-19 14:48:21

阅读数 1207

评论数 0

android事件通信方案对比与LiveDataBus详解

事件通信 定义:Activity、fragment、Service、Provider之间进行信息的传递和交换 通信方案比较 通信方案 优点 缺点 handler 系统原生,能实现线程间通信 高耦合不利于维护容易导致内存泄漏和空指针 broadcast 简单 性能差传播数据有限打...

2019-08-17 15:56:19

阅读数 14

评论数 0

android性能优化全方位详解

什么是性能优化 一款app除了要有强大的功能和交互外,在性能上也应该追求更高的要求,这样才能更好的提高用户体验 优化目的 性能指标 优化的方向 更快 流畅性 启动速度页面响应速度响应速度 更稳定 稳定性 避免出现应用崩溃(crash)避免出现应用无响应(ANR) 更省 资源...

2019-08-16 17:32:14

阅读数 33

评论数 0

SparseArray原理解析

SparseArray原理解析

2019-08-16 16:29:36

阅读数 32

评论数 0

android数据结构基础

基本介绍 ArrayList: 基于数组实现的顺序表,大小可以动态增加,集合元素可以为任意对象类型,基本使用如下 //初始化ArrayList ArrayList<String> arrayList = new ArrayList<>()...

2019-08-16 14:57:40

阅读数 34

评论数 0

android电商组件化设计(含源码):MVP+dagger+组件化

起源 在采用组件化之前,我负责的一个电商项目经历了1.0单模块版本、2.0多模块版本,3.0决定采用组件化来重构项目,并将项目开源,可供同样在做电商的android开发者参考、在研究android架构的同行者共同学习进步。在做之前,我们考虑三个问题,what、why和how,什么是组件化?为什么要...

2019-08-12 12:15:04

阅读数 175

评论数 0

OkHttp解析从入门到精通-从使用到原理

一、基本概念 二、如何使用 三、工作流程分析 i.分发器 ii.拦截器 重试拦截器:在交出(交给下一个)之前,负责判断用户是否取消了请求,在获得了结果之后,会根据响应码判断是否需要重定向,如果满足条件那么就会重启执行所有拦截器 桥接拦截器:在交出之前,负责将HTTp协议必备的请求头加入其中(如:...

2019-08-12 09:11:11

阅读数 151

评论数 0

apk安全浅谈

apk安全方案 签名 混淆 加固 核心代码从java移到ndk/c++中 接口安全处理:验签+https+核心接口加密 一、签名 如果不对app进行签名,其他人员会利用未签名的包进行再打包,加一些广告信息,从而进行非法牟利,对我们造成影响的损失。 签名过程请点击这里 二、混淆 定义:代码混淆...

2019-08-01 14:07:23

阅读数 60

评论数 0

安卓工程师不得不了解的第三方android库

开发架构/模式 google-mvp google-mvvm google-clean MVP+dagger MVVMHabit mosbyMVP 网络 okhttp: HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效...

2019-07-31 15:21:22

阅读数 488

评论数 0

android面试之郑州面试总结

万国商汇 java三大特性,对多态的理解 封装、继承、多态 多态:父类的引用可以指向子类的对象 事件分发机制 事件传递的顺序:Activity->ViewGroup->View dispatchTouchEvent:分发点击事件 onInterceptTo...

2019-07-26 09:58:34

阅读数 461

评论数 0

android面试之今日头条/字节跳动 android社招面试(附答案)

一面 自我介绍 注意点:说有亮点的、跳槽原因,从各个点尽力彰显自己优势、技术特长 手写代码:计算View树上所有view的数量,参数ViewGroup 本质上就是数据结构多叉树递归层序遍历+Android View基本api调用 public int getCount(ViewGr...

2019-07-26 09:17:50

阅读数 461

评论数 0

MvpDaggerArch架构使用文档

简要说明 MvpDaggerArch是基于google官方推荐的MVP+dagger开发模式、同时集成了retrofit+rxJava2、greenDao、MMKV等,设计的一套可用于中小型项目的完整解决方案,可用于android初学者学习架构、android开发者直接基于此架构进行开发。 git...

2019-07-16 16:09:19

阅读数 1296

评论数 0

如何阅读android的framework层源码

如何阅读framework层源码 我们先提出4个问题来分解“如何阅读framework层源码”这个问题 源码从哪里可以看到? 阅读源码需要哪些基础? 阅读源码需要哪些工具? 如何有效地阅读源码? 一、源码从哪里可以看到? 阅读源码可以通过在线阅读和离线阅读两种方式 在线阅读 https://...

2019-06-14 10:29:29

阅读数 1348

评论数 2

ClassLoader类加载源码解析

Java类加载器 BootClassLoader: 用于加载Android Framework层class文件。 PathClassLoader: 用于Android应用程序类加载器。可以加载指定的dex,jar、zip、zpk中的classes.dex DexClassLoader:加载指定的...

2019-06-14 08:52:03

阅读数 1555

评论数 0

多线程、线程池及AsyncTask

基本概念 进程和线程 进程:资源分配的最小单位 线程:独立运行的最小单位 并行和并发 并行:同时执行,举例子来说,就是高速公路上4辆车可以并排着跑,双核四线程的并行度是4,可以同时运行4个线程 并发:单位时间内,能执行的个数,举例来说,单位时间内可以通过的车的数量 线程 实现方式...

2019-06-12 11:27:57

阅读数 216

评论数 0

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