XYH Blog

一板一眼就会滋生弱点

Activity怎么被回收了?

记录Android上的GC对于Activity的影响

前言: 在多年的开发过程中,遇到的问题也是很多,有常见的、有不解的,所谓的开发经验正是与遇到的问题成正比。 Activity什么时候会被回收 日常开发中,有时候会发现在开发过程中,存在多个ActivityTask的情况下返回到之前的页面会重新执行onCreate,为什么应用在前台,这些不在栈顶的Activity还会被回收呢?本文探讨该问题并从中总结关于Activity回收机制运用的部分...

Kotlin inline noinline crossinline

前言 在Kotlin的官方代码中,这几个关键字经常会看到。 比如常用的拓展函数apply,源码就使用了inline关键字。 1 2 3 4 5 6 7 8 9 @kotlin.internal.InlineOnly public inline fun <T> T.apply(block: T.() -> Unit): T { contract { ...

Binder小记

Binder的个人理解小记

前言 在了解Binder之前,需要对Android的整个架构有个大致了解。 Android开发中Binder是必须了解的知识,但是想要去深入了解其原理其实是一件比较麻烦的事情,涉及到的内容太杂。从Framework到Kernel,处处都在使用Binder。本文不记录源码,篇幅过长,本文记录对于Binder的理解、工作流程以及Binder的使用。 Binder是什么 Binder是...

Android 侧滑菜单的实现思考

SwipeMenuLayout

前言 本文的由来是群里有好几个群友在咨询关于RecyclerView侧滑菜单的功能,虽然在Github上有很多案例,但是对于实现一个带侧滑功能的Layout没有很好的说明,于是决定写这篇博客来记录一下一个侧滑的Layout怎么实现。 本文涉及到的内容: ViewDragHelper 自定义ViewGroup 效果图 实现流程 首先这种效果是侧滑菜单放在内容View...

RecyclerView Item倒计时设计的思考

RecyclerView Countdown

前言 RecyclerView Item倒计时这个需求比较常见于商品的秒杀,活动的预告之类,在之前项目中采用的实现方式是ViewHolder持有CountDownTimer,虽然这种方式可以实现Item倒计时,但是给每个ViewHolder设计一个CountDownTimer无疑增加了CPU的开销以及内存的浪费,之后尝试思考能不能使用一个轮询来实现这种效果,一番思考之后想到了解决方案。 ...

ConstraintLayout小知识汇总

常用的小知识

本文记录ConstraintLayout使用中的一些小知识点。当前使用的ConstraintLayout版本为: 1 implementation "androidx.constraintlayout:constraintlayout:2.1.0" 基线对齐 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

Jetpack Paging3

Paging3入门

Paging简介 Paging是Google推出用于更适用于Android平台的分页库, 数据源可以来自网络或者本地,利用Paging可以使应用更加高效的利用网络带宽和系统资源。 对比传统的分页实现,Google为何单独推出一个Paging用于处理分页呢? Paging的内部实现有一套非常合理的分页架构,我们按照提供架构实现自己的业务逻辑即可,至于什么时候加载、加载状态,都由Paging...

RecyclerView ConcatAdapter

ConcatAdapter

ConcatAdapter可以依次呈现多个RecyclerView#Adapter的内容,它是由MergeAdapter改名而来。 MergeAdapter是在RecyclerView:1.2.0-alpha02版本中添加进来的,然后在RecyclerView:1.2.0-alpha04改名为ConcatAdapter。 比如常见的给RecyclerView添加Header或者F...

Android存储空间整理

Scope Storage

Android文件系统类似于其他平台上基于磁盘的文件系统。该系统提供了以下几种保存应用数据的选项: 应用专属存储空间:存储仅供应用使用的文件,可以存储到内部存储卷中的专属目录或外部存储空间中的其他专属目录。使用内部存储空间中的目录保存其他应用不应访问的敏感信息。 共享存储:该目录下的文件,包括媒体、文档和其他文件可以与其他应用共享。 偏好设置:以键值对形式存储私有原始数据。 ...

CameraX小记

Jetpack CameraX

本文记录如何使用CameraX预览、拍照、解析照片、录制视频。 CameraX特性: CameraX最低兼容到Android5.0(API 21) CameraX使用的是Camera2的API,但使用的是更为简单且基于用例的方法,该方法具有生命周期感知能力。 支持CameraX Extensions插件,用于访问手机制造商已为特定手机实现的效果(焦外成像、HDR 及其他功能...