字节数组

其他

Android 13 媒体权限适配指南

系统更新接收对模块化系统组件的更改此外,如果您允许系统配置照片选择器,该工具会自动更新,并随着时间推移为应用的用户提供扩展的功能,而无需对代码进行任何更改再来看下应用如何来使用该图片选择器首先,由于
2022年10月30日
其他

ASM 字节码插桩:Jetpack Compose 实现双击防抖

methodNode.instructions.insert(input)}最终的防抖效果就可以很明显的看出来,当快速点击有启用双击防抖功能的控件时,index
2022年10月24日
其他

从 Lambda 表达式到字节码插桩

开发中非常普遍的一种技术手段,其应用范围非常广泛,涉及各种业务强关联或者和业务无关的领域,例如:无痕埋点、隐私合规检测、耗时方法统计、性能检测、双击防抖等我之前就写过几篇文章,介绍了几种通过
2022年10月9日
其他

Jetpack Compose 实现完美屏幕适配

值,因此我们可以细粒度地控制今日头条方案的生效范围,使其只在局部生效而不用担心会影响到其它业务模块,真正做到了完美适配且引入成本极低此外,我们主动修改
2022年6月28日
其他

Jetpack Compose 实现一个图片选择框架

uri、displayName、mimeType、width、height、orientation、size、path、bucketId、bucketDisplayName
2022年6月13日
其他

一文读懂 Android 主流屏幕适配方案

文件夹内,就像以下这样:valuesvalues-sw360dpvalues-sw380dpvalues-sw400dpvalues-sw420dp这样,我们就可以直接在布局文件中套用设计稿的
2022年3月16日
其他

ASM 字节码插桩:监控大图加载

等开源库来加载图片,完全无需关心其加载过程,而其中可能就隐藏着一个不是很合理的情况:加载的图片属于大图,超出了展示所需加载展示所需的图片会造成不必要的性能浪费,同时也可能会引发
2022年3月14日
其他

ASM 字节码插桩:助力隐私合规

了对于第二点。需要在应用运行时动态记录每次触发隐私行为的时间点和调用链信息,根据触发时间来判断该隐私行为是否过量执行,根据调用链信息来辅助判断具体是哪一块业务在获取隐私数据。这就需要对应用进行
2022年3月12日
其他

ASM 字节码插桩:进行线程整治

runnable(运行)的线程,这在使用了线程池时比较容易出现。每个线程池会包含有一定数量的核心线程和非核心线程,默认情况下核心线程即使处于闲置状态也是不会被回收的,即默认不受
2022年3月11日
其他

ASM 字节码插桩:实现双击防抖

"onItemChildClick(Lcom/chad/library/adapter/base/BaseQuickAdapter;Landroid/view/View;I)V",
2022年3月9日
其他

不止 Android,Compose Multiplatform 初探

是跨平台开发中绕不过的一个点。假设有一个获取手机型号的需求,获取手机型号的整体处理流程可以是属于可以共用的业务逻辑,但实际获取手机型号的过程就需要在不同平台上进行差异化实现了,Android
2022年3月7日
其他

Jetpack Compose 写一个聊天 App,附赠源码(下)

就被改变了,视图上就会一直显示着修改后的值。但此时用户并没有保存设置,所以就会一直显示着非真实昵称,就像下图所示而我希望达到的效果是,当该浮层被关闭后,nickname
2022年3月5日
其他

Jetpack Compose 写一个聊天 App,附赠源码(上)

参数用于在屏幕上显示文本信息。在这整个过程中,开发者不持有任何视图节点的引用,而是以描述的方式来声明视图应该如何呈现,且视图并不直接持有状态,而是依赖状态来生成自身。这种方式就属于声明式声明式
2022年3月4日
其他

随便嵌套?Jetpack Compose 到底优秀在哪里

IllegalStateException。这使得我们可以根据需要进行深层次嵌套,此时测量次数也只会是线性增长,而不用担心会影响性能引用官方的例子来说明:Compose
2022年3月3日
其他

学不动也要学,Jetpack Compose 实现自定义绘制

体系架构下,实现自定义控件的步骤和原生方式相比有着挺大的差别。最终实现的控件对应的也是一个可组合函数,而非一个类。而且我们不用再多在意控件本身的可见性和生命周期了,因为
2022年3月2日
其他

学不动也要学,Jetpack Compose 玩一把俄罗斯方块

ViewGroup。当应用的数据由于用户交互等原因而发生变化时,界面的层次结构就需要进行更新以显示最新数据。最常见的界面更新方式就是使用findViewById()等函数遍历视图树,并通过调用
2022年3月1日
其他

Android 主流开源库源码分析(十三)- 可能是全网第一篇 Coil 源码分析文章

key,如果内存缓存可用的话就直接使用缓存,结束流程如果存在内存缓存但是不可用(可能是由于硬件加速配置不符或者是本次不允许使用缓存),那么就更新该缓存在内存中的可用状态并更新引用计数,执行下一步调用
2022年2月28日
其他

Android 主流开源库源码分析(十二)- OkHttp & Retrofit 开发调试利器

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月26日
其他

Android 主流开源库源码分析(十一)- OkHttp 源码详解

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月25日
其他

Android 主流开源库源码分析(十)- Glide 你可能不知道的知识点

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月24日
其他

Android 主流开源库源码分析(九)- Glide 源码详解

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月23日
其他

Android 主流开源库源码分析(八)- Retrofit 与 LiveData 的结合使用

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月22日
其他

Android 主流开源库源码分析(七)- Retrofit 源码详解

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月21日
其他

Android 主流开源库源码分析(六)- LeakCanary 扩展阅读

回收具有强引用的对象软引用(SoftReference):如果一个对象只具有软引用,那么在内存空间不足时就会回收该对象弱引用(WeakReference):如果一个对象只具有弱引用,那么在
2022年2月20日
其他

Android 主流开源库源码分析(五)- LeakCanary 源码详解

AndroidXFragmentDestroyWatcher、AndroidSupportFragmentDestroyWatcher、AndroidOFragmentDestroyWatcher
2022年2月19日
其他

Android 主流开源库源码分析(四)- ARouter 自己实现一个

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月18日
其他

Android 主流开源库源码分析(三)- ARouter 源码详解

(Class.forName(className).getConstructor().newInstance())).loadInto(Warehouse.interceptorsIndex);
2022年2月17日
其他

Android 主流开源库源码分析(二)- EventBus 自己实现一个

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月16日
其他

Android 主流开源库源码分析(一)- EventBus 源码详解

来说,很多开源库都是属于开发必备的知识点,从使用方式到实现原理再到源码解析,这些都需要我们有一定程度的了解和运用能力。所以我打算来写一系列关于开源库源码解析和实战演练的文章,初定的目标是
2022年2月15日