自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通俗易懂 + Android 实战视角,彻底讲清楚SharedFlow

摘要:SharedFlow是Kotlin中处理UI事件的推荐方案,适合Toast、导航等一次性事件分发。作为热流,它无初始值,支持多播和可配置缓冲区(replay=0+BufferOverflow.DROP_OLDEST),确保事件不丢失或重复消费。与StateFlow不同,SharedFlow专注于动作而非状态。

2025-11-13 10:53:44 627

原创 通俗易懂 + Android 开发实战视角,来彻底讲清楚 Hilt:Google 官方推荐的 Android 依赖注入(DI)框架

Hilt是专为Android设计的依赖注入框架,基于Dagger但更加简化。它通过注解自动管理对象创建和生命周期,解决手动依赖注入的紧耦合、难测试等问题。核心四要素为:@HiltAndroidApp、@AndroidEntryPoint、@Inject以及@Module+@Provides。Hilt优势在于极少的样板代码、自动Android集成、开箱即用的ViewModel支持,并支持作用域控制对象生命周期。使用Hilt可以专注业务逻辑,提升代码可测试性与可维护性,是现代Android开发的推荐方案。

2025-11-12 14:04:35 766

原创 通俗易懂 + Android 开发实战视角,来彻底讲清楚 Coil:现代 Android 开发中最轻量、最 Kotlin 友好的图片加载库

摘要:Coil是专为Kotlin和Jetpack Compose设计的现代化图片加载库,基于协程实现轻量高效的图片加载。相比Glide和Picasso,Coil具有纯Kotlin实现、原生Compose支持、更简洁的API等优势。核心特性包括:协程原生支持、自动生命周期管理、智能缓存策略、丰富的图像变换处理,以及针对Compose的深度优化。使用仅需1-3行代码即可完成网络图片加载,支持占位图、错误图等常用功能。尤其适合Kotlin+Compose项目,能显著提升开发效率和性能表现。

2025-11-11 13:46:26 878 1

原创 通俗易懂 + Android 开发实战视角,来彻底讲清楚 Kotlin 的 伴生对象(Companion Object)

Kotlin中的伴生对象(companion object)是替代Java静态成员的面向对象解决方案,它作为类的"共享工具箱",可在不实例化类的情况下访问其成员。文章详细介绍了伴生对象的定义语法、本质原理以及Android开发中的典型应用场景,如工厂方法、常量定义和序列化等。同时对比了伴生对象与普通对象(object)的区别,并提供了最佳实践建议:优先使用顶层函数处理通用工具方法,仅为与类强相关的静态成员使用伴生对象。

2025-11-11 13:41:52 639

原创 用通俗易懂 + Android 开发视角的方式,讲清楚 Kotlin Flow 中的 reduce 操作符

摘要:Flow中的reduce操作符因其需要等待Flow结束的特性,在Android开发中几乎不适用,尤其是处理无限数据流(如StateFlow)时。相比之下,scan操作符更适合实时累积状态(如点击计数器)。建议在有限数据聚合时使用List.reduce,而动态数据流处理优先选择scan。

2025-11-11 09:17:18 889

原创 通俗易懂 + Android 开发实战的方式,详细讲讲 Kotlin 中的 StateFlow

StateFlow是Kotlin协程中用于状态管理的热数据流,具有以下核心特性:1.必须有初始值,适合表示UI状态;2.自动跳过重复值更新;3.新订阅者立即获取最新状态。它相比LiveData更契合现代Android开发,原生支持协程和完整Flow操作符,推荐配合sealed class表示清晰的状态。最佳实践包括:对外暴露只读StateFlow、使用stateIn操作符转换普通Flow、结合repeatOnLifecycle避免内存泄漏。

2025-11-11 09:14:08 1125

原创 用通俗易懂 + Android 开发实战的方式讲解 Kotlin Flow 中的 filter 操作符

本文介绍了Kotlin Flow中的filter操作符。filter用于筛选数据流,只允许符合条件的数据通过,其作用类似于"筛子"。文章讲解了filter的基本语法、特点(同步判断、不改变数据类型)及常见误区(不能包含挂起函数)。通过数字筛选和Android实战案例(用户过滤、搜索框输入处理)演示了filter的应用场景。文章还强调了filter与其他操作符(如map、debounce等)的链式组合使用,并指出filter是Flow中最基础且常用的操作符之一,特别适合数据验证和状态过滤等

2025-11-07 10:51:28 376

原创 用通俗易懂方式,详细讲讲 Kotlin Flow 中的 map 操作符

Kotlin Flow的map操作符是处理异步数据流的关键工具,它能将流中的每个元素同步转换为另一种形式。Flow作为冷流只有在收集时才会执行,通过map可以一对一地转换数据,比如将用户ID转换为用户名。在Android开发中,map常用于将数据库实体转换为UI需要的数据模型。需要注意的是,map是同步操作,不能直接调用挂起函数,此时应改用transform。map让数据流处理更清晰、更函数式,与LiveData/StateFlow配合良好,是数据模型转换的理想选择。

2025-11-07 10:00:06 368

原创 用通俗易懂的方式讲讲 Kotlin 中的 sealed(密封类)

密封类是Kotlin中的一种"有限种类父类",其子类必须在同一文件中定义且数量已知。与普通类不同,密封类能确保所有可能状态都被处理,特别适合Android开发中管理UI状态、网络请求结果等场景。通过配合when表达式使用,可以避免遗漏状态处理。相比枚举,密封类允许每个分支携带不同数据,更加灵活。典型应用包括UI状态管理、事件处理和网络请求封装,能有效提升代码的安全性和可读性。

2025-11-07 09:57:15 1024

原创 用通俗易懂 + Android 开发实战的方式,详细讲解 Kotlin Flow 中的 retryWhen 操作符

摘要:Kotlin Flow的retryWhen操作符提供了智能重试机制,允许开发者根据异常类型、重试次数等条件灵活控制重试逻辑。相比简单的retry(n),它能实现更精细的控制,如仅对特定异常重试、指数退避延迟或手动触发重试。通过Android实战示例展示了如何结合网络请求错误处理、UI交互(如重试按钮)来构建健壮的流程。关键注意事项包括避免无限重试、添加延迟、区分可恢复错误等。retryWhen是处理网络请求失败等场景的推荐方案,能显著提升应用容错性和用户体验。

2025-11-06 09:37:19 342

原创 通俗易懂 + Android 开发实战视角,来详细讲讲 Kotlin 的 内联函数(inline functions)

内联函数是Kotlin中的编译优化技术,通过将函数代码直接插入调用处来消除lambda表达式带来的性能开销。它特别适合小型高阶函数,能避免创建匿名对象和方法调用成本,提升Android开发中频繁使用的lambda表达式(如集合操作、协程等)的执行效率。使用时需注意:仅对接收lambda且调用频繁的小函数使用,避免递归、大函数和非lambda场景。标准库中的run/let等作用域函数都采用了内联优化。合理使用内联函数可编写出高效简洁的工具函数,但滥用会导致代码膨胀。

2025-11-06 09:16:46 808

原创 通俗易懂 + Android 开发实战视角,来彻底讲清楚 Kotlin 的 高阶函数(Higher-Order Functions)

摘要:高阶函数是Kotlin中可接受函数作为参数或返回函数的函数,它提升了代码的表达力和简洁性。核心形式包括函数作为参数(如retry操作)和函数作为返回值(如工厂模式)。Kotlin使用(参数)->返回值表示函数类型,在Android开发中广泛应用于点击防抖、网络请求封装等场景。标准库的filter/map等操作也是高阶函数的典型应用。最佳实践包括语义化命名、避免深层嵌套等。高阶函数与lambda结合能使代码量减少70%,是函数式编程的核心特性,日常开发的map、launch等操作本质上都是高阶函数

2025-11-06 09:00:00 955

原创 彻底讲清楚 Kotlin 的 when 表达式

Kotlin的when语句是功能强大的控制流工具,可以替代if-else和switch,支持值匹配、区间检查、类型判断等特性。作为表达式使用时可以返回值,配合密封类可实现类型安全的状态管理。相比Java的switch,when更灵活强大,无需break且不会穿透。最佳实践包括优先使用when替代长if-else、结合let处理可空值、避免在when中编写复杂逻辑。when是Kotlin编写简洁、安全代码的重要特性,广泛应用于Android开发中的数据转换、UI渲染和状态管理等领域。

2025-11-05 19:09:37 487

原创 彻底讲清楚 Kotlin 的 by 关键字 和 lazy 委托

Kotlin中的by lazy是属性委托的经典实现,用于延迟初始化昂贵对象。核心机制是将属性getter逻辑委托给Lazy对象,仅在首次访问时执行初始化。在Android开发中适合用于数据库、ViewModel等场景,能优化启动性能。by关键字支持多种委托模式,如状态管理、偏好设置等。使用时需注意线程安全模式选择,避免在可能为null的上下文中使用,并优先采用框架提供的委托方案(如viewModels())。相比直接初始化,by lazy实现了按需创建,是提升应用性能的有效手段。

2025-11-05 18:37:09 1722

原创 RK3566/RK3568 Android11 修改selinux模式

RK3566/RK3568 Android11 SDK默认启用SELinux强制模式(Enforcing)。SELinux有三种模式:强制模式(限制访问)、宽容模式(仅警告)和关闭模式。可通过adb命令切换模式,也可在SDK代码中修改

2025-07-11 17:49:11 346

原创 RK3566/RK3568 Android11 CAN开发(内核配置+测试验证+安卓app开发)

本文介绍了RK3566/RK3568芯片的CAN/CANFD协议开发流程。主要内容包括:1)驱动配置,详细说明了内核驱动文件位置、DTS节点配置参数及内核配置方法;2)CAN通信测试,介绍canutils工具包的功能及常用命令操作流程;3)安卓APP开发,提供CAN口收发数据。

2025-07-11 16:26:01 527

原创 RK3566/RK3568 Android11 获取root权限

本文介绍了如何编译userdebug版本并关闭SELinux,同时修改su文件以授予root权限。首先,在BoardConfig.mk中设置BOARD_SELINUX_ENFORCING=false以关闭SELinux。接着,在su.cpp中注释掉用户组权限检测代码,允许非root和shell用户使用su。然后,在fs_config.cpp中将su文件的权限设置为06755,确保其默认具有root权限。最后,在Zygote.cpp和commoncap.c中注释掉相关代码,避免权限限制。通过这些步骤,可以实现

2025-05-09 14:16:00 319

原创 RK3566/RK3568 Android 11 动态禁止/启用APP

RK3566/RK3568 Android 11 定制大全在系统服务中增加动态禁止/启用应用。

2024-09-04 14:53:49 663

原创 RK3566/RK3568 Android 11 动态隐藏应用通知

RK3566/RK3568 Android 11 定制大全在系统服务中增加动态隐藏APP通知,可以在上层app动态添加需要隐藏通知的APP,支持添加多个APP,支持移除,重启或关机后还能继续生效。

2024-09-04 10:40:37 517 1

原创 RK3566/RK3568 Android 11 无操作自动隐藏导航栏、底部上拉显示导航栏

RK3566/RK3568 Android 11 定制大全在系统服务中增加无操作自动隐藏导航栏方法,在上层app动态调用无操作自动隐藏导航栏方法,系统会在5秒无操作后自动隐藏导航栏,隐藏导航栏后从底部上拉可显示导航栏,设备关机和重启后也能继续生效。

2024-09-03 19:24:28 1069 1

原创 RK3566/RK3568 Android 11 动态显示/隐藏下拉框

在系统服务中增加显示/隐藏状态栏方法,在上层app动态调用显示/隐藏下拉框方法,设备关机和重启后也能继续生效。

2024-09-03 13:51:13 615

原创 RK3566/RK3568 Android 11 动态显示/隐藏状态栏

在系统服务中增加显示/隐藏状态栏方法,在上层app动态调用显示/隐藏状态栏方法,设备关机和重启后也能继续生效。

2024-09-03 10:50:40 1016

原创 RK3566/RK3568 Android 11 动态显示/隐藏导航栏

在系统服务中增加显示/隐藏导航栏方法,在上层app动态调用显示/隐藏导航栏方法,设备关机和重启后也能继续生效。

2024-08-30 17:09:14 775

原创 RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

2024-08-29 09:47:45 536 2

原创 Android framework 定制大全

本专栏《Android 11 framework定制大全》,以 Android11 RK3568开发板来讲解教程,本教程其实和硬件关联不大,主要是软件层的开发。本套课程基本满足一套常规Android工控方案定制的所有功能需求,适合想了解framework层开发的驱动工程师和Android应用工程师。本栏目以学习为目的,本栏目提供的所有资料请勿用于商业用途,用于商业用途小编一概不负责。

2024-08-28 14:37:05 1441

原创 android studio引用framework.jar

【代码】android studio引用framework.jar。

2023-06-29 17:57:32 736

原创 Android Button、TextView等控件使用Toolbar中默认的返回图标

使用Android 默认返回图标

2023-03-23 10:44:50 393

原创 Android实现在休眠状态下继续播放视频的功能

Android实现在休眠状态下继续播放视频的功能

2023-03-23 10:34:40 2198

原创 秒懂Android View的绘制流程

秒懂Android View的绘制流程

2023-03-10 11:31:18 995

原创 秒懂Android事件分发机制

秒懂Android事件分发机制

2023-03-08 10:18:33 657

原创 C++指针的用法:指针和类

C++指针的用法:指针和类

2023-03-06 16:30:26 284

原创 C++指针的用法:指针和函数

C++指针的用法:指针和函数

2023-03-06 16:26:33 214

原创 C++指针的用法:指针和 const

指针和 const

2023-03-06 16:11:17 155

原创 C++ 中的指针使用

C++指针的使用

2023-03-06 14:23:27 587

原创 一个简单的Android I2C驱动程序示例

一个简单的Android I2C驱动程序示例

2023-03-02 19:12:12 744

原创 java中的List(ArrayList、LinkedList)和Set(HashSet、TreeSet)的区别

List(ArrayList、LinkedList)和Set(HashSet、TreeSet)的区别

2023-02-28 11:30:55 583

原创 Android 网络编程实现代理访问

Android网络编程实现代理访问

2023-02-28 10:26:03 1784

原创 java或Android平台上使用Socket

需要注意的是,Socket编程可能会涉及到一些异常处理和线程同步问题。还需要确保Socket连接的线程和UI线程的同步问题,以避免出现ANR等问题。因此,在开发Android Socket程序时,需要认真考虑这些问题,确保程序的健壮性和可靠性。在Android应用程序中创建Socket对象,指定要连接的服务器的IP地址和端口号。通常需要在一个单独的线程中执行Socket连接,以免阻塞主线程。在Socket连接建立后,可以使用InputStream和OutputStream对象进行数据读写。

2023-02-28 10:20:57 700

原创 Java反射使用示例

上述代码中,我们首先获取 MyClass 的 Class 对象,然后使用 newInstance() 方法创建 MyClass 的一个实例,接着使用 getDeclaredMethod() 方法获取 myPrivateMethod 方法的 Method 对象,由于 myPrivateMethod 是私有方法,因此我们需要调用 setAccessible(true) 方法来允许访问私有方法,最后使用 invoke() 方法调用该方法。下面我们就来看几个动态调用方法的例子。这就是几个动态调用方法的例子。

2023-02-24 14:15:53 1921 2

原创 java反射的基本使用方法

Java反射

2023-02-24 11:45:45 2932

超好用的android串口工具

用过很多串口工具,这个是最好用的,亲测android 7.1 到android 11都能用。直接解压后得到apk文件,然后把apk文件安装到android系统即可,软件能自动获取串口列表,用户手动选择串口号,然后点击打开即可操作。真心建议下载,真的好用,所以才推荐。

2023-07-18

android 刷机工具

android 刷机工具,开发工具为开发人员提供了固件烧录|镜像烧录|设备擦除|设备切换|固件解包等功能,支持很多芯片。

2023-07-18

空空如也

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

TA关注的人

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