自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Jetpack Compose + Hilt 使用 ExoPlayer

本文介绍了使用ExoPlayer实现视频播放功能的开发流程。主要包括:1. 核心组件配置,通过Dagger Hilt依赖注入创建ExoPlayer实例,并设置100MB的缓存策略;2. 状态管理设计,使用ViewModel管理播放状态、加载状态和错误信息;3. 生命周期处理,通过LifecycleEventObserver实现暂停时自动停止播放;4. UI组件实现,包含播放器视图和网络视频播放按钮。该方案提供了完整的视频播放功能实现,包括缓存优化、状态同步和异常处理机制。

2026-03-12 18:42:55 361 1

原创 OkHttp拦截器

No Content(服务器成功地处理了客户端的请求,但是没有任何要响应的内容)的时候,返回的。就会越界,超出范围,这时候check能够第一时间抛出异常,防止程序崩溃。这个先处理“用户逻辑”,再处理“协议的逻辑”,最后建立连接、读写数据。如果在请求过程中,用户取消了请求,需要及时关闭响应体,防止内存泄露。来读取数据,就都有有判空的步骤,这样代码的复杂度将会增加。这个在OkHttp的前半段中,当前半段拦截器执行时,列表是同一个,唯一的区别是 index 加了 1。这个强制要求,任何拦截器返回的对象,其中的。

2026-02-23 16:39:31 738

原创 Android View 挂载流程全解析(下)

本文详细解析了Android视图系统的挂载流程,重点分析了从setContentView到handleResumeActivity的完整过程。关键点包括:1) PhoneWindow作为窗口管理者;2) DecorView作为视图根容器;3) ViewRootImpl作为核心纽带,负责绘制流程发起、事件分发和WMS通信。文章深入剖析了WindowManagerGlobal的addView流程、ViewRootImpl的setView方法,以及最终的performTraversals三大绘制阶段(测量、布局、

2026-02-13 14:23:46 1326

原创 Android View 挂载流程全解析(上):从 Activity 到 WindowManager

Android视图挂载流程解析:从setContentView到屏幕显示 摘要:本文详细分析了Android视图从Activity的setContentView()到最终显示在屏幕上的完整流程。首先,setContentView()会触发AppCompatDelegate创建DecorView,并通过LayoutInflater将布局填充到ID为content的FrameLayout中。然后,在ActivityThread的handleResumeActivity()中,系统通过WindowManager.

2026-02-12 16:45:25 670

原创 OkHttp 源码解析

OkHttp作为Android主流HTTP客户端,其核心设计包括四个关键组件:1)OkHttpClient作为门面类提供统一接口;2)Request封装HTTP请求数据;3)RealCall负责连接应用层和网络层,支持同步/异步请求;4)Dispatcher作为调度大脑,通过双端队列管理任务执行。特别值得注意的是其并发控制机制,通过maxRequests(默认64)和maxRequestsPerHost(默认5)限制请求数量,配合原子计数器和线程池实现高效调度。任务执行采用"永动机"模式

2026-02-11 14:50:09 722

原创 Android中JNI和NDK

本文介绍了Android NDK和JNI的基本概念及简单实现。JNI作为Java与C/C++的通信桥梁,NDK则是编译工具包。文章通过一个Kotlin调用C++字符串的示例,详细讲解了JNI方法的定义规则、CMake构建脚本配置,以及JNIEnv等核心概念的使用。示例包括Kotlin加载库声明、C++函数实现及CMake编译配置,帮助开发者快速掌握Android原生开发的基础流程。该技术适用于高性能计算、复用C/C++库等场景。

2026-02-10 16:57:02 679

原创 Compose中使用Hilt注入ViewModel指南并有简单实例

摘要:本文介绍如何在Jetpack Compose中使用Hilt实现ViewModel依赖注入。

2026-02-09 21:51:49 831

原创 Handler机制解析

摘要:Handler是Android消息机制的核心组件,用于线程通信和UI操作调度。其四大组件包括消息载体Message、优先级队列MessageQueue、轮询器Looper和处理者Handler。核心流程涉及消息发送、队列存储和循环分发。关键考点包括:1)ThreadLocal保证线程与Looper的一一对应关系;2)Looper的死循环设计不会导致ANR,通过epoll机制实现高效休眠;3)Handler可能引发内存泄漏,需使用静态内部类和弱引用防范;4)同步屏障机制可优先处理UI刷新等异步消息。

2026-02-09 20:14:20 355

原创 SharedPreferences弃用后:DataStore + Android Keystore 打造硬件级安全存储全攻略

Android加密存储最佳实践:Google建议弃用EncryptedSharedPreferences,改用DataStore+AndroidKeystore组合方案。通过定义密钥别名、加密算法(AES/GCM/NoPadding)和密钥规格(256位),在硬件安全模块中生成和存储密钥。实现包含加密/解密流程:加密时自动生成IV并写入输出流,解密时先读取IV再验证数据完整性。配合Kotlin序列化,构建安全可靠的用户数据存储方案,异常时返回默认值保证稳定性。该方案相比传统方法具有更高安全性和现代化架构优势

2026-01-08 14:33:25 1033

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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