DiskLruCache 源码深度解析
DiskLruCache 源码深度解析1、DiskLruCache 概述DiskLruCache 是一种基于 LRU(Least Recently Used)算法的磁盘缓存实现,由 Jake Wharton 开发,广泛应用于 Android 应用中。它提供了高效的文件系统缓存机制,特别适合缓存网络请求结果、图片等大型数据。核心特性: - 基于 LRU 算法,自动管理缓存大小 - 支持多线程并发操作
分类
聚焦于 GitHub 上优秀的 Android 开源组件推荐与剖析,深入探讨其应用与集成实践。从 AndroidX 库的核心模块(如 AppCompat、ConstraintLayout)到 JitPack 仓库的便捷依赖管理,提供详尽的使用指南、源码解读和优化案例。涵盖网络框架、UI 组件、数据库工具等热门项目,帮助开发者快速引入并提升项目效率。
共 79 篇文章
DiskLruCache 源码深度解析1、DiskLruCache 概述DiskLruCache 是一种基于 LRU(Least Recently Used)算法的磁盘缓存实现,由 Jake Wharton 开发,广泛应用于 Android 应用中。它提供了高效的文件系统缓存机制,特别适合缓存网络请求结果、图片等大型数据。核心特性: - 基于 LRU 算法,自动管理缓存大小 - 支持多线程并发操作
AndroidX Biometric 生物识别登录实现指南AndroidX Biometric 是 Google 提供的生物识别认证库,支持指纹、面容等生物识别方式,兼容 Android 6.0 以上设备。本文从依赖配置到完整代码示例,详细介绍如何在项目中集成生物识别登录功能。1、添加依赖在 build.gradle 的 dependencies 节点下增加:建议使用最新版本,可在 Google
新一代Json解析库Moshi使用及原理解析1、什么是 MoshiMoshi 是 Square 公司开发的新一代 JSON 解析库,专为 Kotlin 和 Java 设计。它是 Gson 的继任者,提供了更现代、更安全、更灵活的 JSON 解析方案。核心优势: - 完全支持 Kotlin 语言特性(空安全、数据类等) - 编译时类型安全检查 - 性能优异,内存占用低 - 扩展性强,支持自定义类型适
Android MergeAdapter 用法详解1、MergeAdapter 概述MergeAdapter 是 Android Jetpack RecyclerView 库中的一个适配器类,它允许将多个不同的适配器合并为一个,从而在同一个 RecyclerView 中显示不同类型的内容。这一特性极大地简化了复杂列表的实现,特别是当列表中包含多种不同类型的数据和视图时。核心特点: - 支持合并多个
Android Jetpack分页库:Paging3 1、Paging3 概述Paging3 是 Android Jetpack 中的一个分页库,旨在简化 Android 应用中处理大型数据集的过程。它提供了一种高效、灵活的方式来加载和显示分页数据,特别适用于从网络或数据库加载大量数据的场景。核心特点: - 自动分页加载:根据需要自动加载数据,避免一次性加载全部数据 - 内存管理:智能缓存机制,优
Room TypeConverter 深度解析TypeConverter 是 Room 数据库中处理非原生数据类型的关键机制,它允许您在数据库中存储复杂的数据类型。下面我将详细介绍其使用方法和工作原理。1、基本概念 Room 默认支持以下原生类型: 基本类型:int, long, float, double, boolean 包装类型:Integer, Long, Float, Double, B
使用Lottie报错:You must set an images folder before loading an image上一篇关于Lottie的博客还是5年前写的:优美的开源动效库:Lottie。Lottie依旧是复杂动画最优雅的实现,工作量交给设计师, 开发只需要拿着设计师提供的JSON动效文件加载即可。很久没有使用Lottie,拿到JSON格式文件,按照之前的方式直接加载,使用Lott
Otto中的生产者和消费者前面在Otto小巧的事件总线一文中了解了Otto事件总线这个库。本篇详细介绍一下Otto中生产者和消费者的实现,Otto中有两个注解:@Subscribe和@Produce。@Subscribe注解大家比较熟悉,在EventBus中也有同名的注解,在订阅者类中定义接收事件的方法。而另一个注解不常用:@Produce。用来定义生产者中发送事件的方法,当生产者注册到Bus中会

Otto小巧的事件总线Otto,不是KSG的中单,是Square在2015年发布的事件总线通信库,作者是大名鼎鼎的JakeWharton。代码行数550行(注释420行)只有EventBus的1/3,经过多年的打磨已于2019年封存不再维护。它仍然值得开发者学习。Otto是一个事件总线,用于应用程序的不同组件之间进行有效的通信,用来降低程序之间的耦合性。Bus构造没有使用建造者模式,直接使用Bus

发布开源组件到JitPack好几个月没有更新博客,业余精力主要放到开源社区,经过近一年的一点点积累,也写了几个小组件。推荐将组件发布到JitPack,只需要简单的几步。比发布到Maven要方便简单的多,不需要修改项目引入额外的'maven-publish'等容易出错的gradle配置。1、发布release第一步,在GitHub上发布release版本,这里以WaveLoadingCircleVi

实时调试插值方程:interpolator分享一个实时调试插值方程的开源工具:interpolator,在动效开发中会有帮助,预览插值器效果,所见即所得。关于插值器另见动画插值器Interpolator一文。GitHub地址:github/inloop/interpolator。interpolator是用JavaScript和Html实现的前端项目,clone到本地打开index.html文件即

权限申请库:AndPermission(二)在权限申请库:AndPermission(一)中介绍了阿里严振杰所写的权限申请库:AndPermission,虽然很不靠谱被喷的不少,但仍推荐阅读此库的源码。它的源码比较容易阅读和理解,适合Android初学者学习,帮助理解Android的权限机制。随着Google对Android的不断升级完善,越来越重视对用户隐私的保护,现在Android框架的权限机

权限申请库:AndPermission(一)在Android 6.0(也就是Android M)之前,权限在安装时全部授予,在保护隐私方面起到的作用有限;于是在Android 6.0及之后对权限进行了分类,涉及隐私等重要权限需要在运行时动态申请。另外,随着Android版本的更新迭代,有新的权限加入,也有旧的权限废弃。关于权限的申请,之前就了解过一些优秀的库:通过注解申请权限的Permission

Facebook开源闪光效果库:ShimmerFacebook开源的库总是令人称赞,比如强大的Android调试工具Stetho、大名鼎鼎的跨端框架React Native、声明式UI渲染框架Litho等均是出自Facebook。Shimmer也是Facebook开源的一个Android库,提供了一种简单的方法为应用中的任何视图添加闪光效果。最近借助它实现内容加载骨架,无论在开发过程中,还是最终效

简单快速的对象存储库:Paper(二)在前面简单快速的对象存储库:Paper(一)中介绍了Paper库及其简单使用,Paper库代码不多,源码也易于阅读,主要理解其设计。简要概括Paper设计如下:1、获取Book实例开发者无需关注Book实例的构造,只需通过Paper提供的几个方法获取Book实例:①获取指定名称的Book,不能使用内部保留名称DEFAULT_DB_NAME②获取默认DEFAUL