
Android 夯实基础
文章平均质量分 77
jiet_h
道阻且长,行则将至。
展开
-
Android锁
在 Android 应用的开发过程中,随着业务需求的复杂度不断提升,多线程并发场景层出不穷。为了保证数据一致性与线程安全,锁(Lock)成为了不可或缺的工具。本篇博客将深入剖析 Android 中常用的锁机制、使用场景与最佳实践,并配以精炼的示例代码与示意图,帮助你快速掌握锁的精髓。原创 2025-05-14 15:54:33 · 874 阅读 · 0 评论 -
Java 核心基石:深入理解 `java.lang.Object` 类在 Android 开发中的作用与实践
在 Java 中,`java.lang.Object` 类被称为所有类的根类,也就是“万物之祖”。无论是在日常开发还是在 Android 框架的设计中,这个类都扮演着极其关键的角色。本文将从多个角度全面剖析 Object 类的设计原理、核心方法及其在实际项目中的运用,希望能为广大开发者提供有价值的参考。原创 2025-04-16 10:45:59 · 952 阅读 · 0 评论 -
Koin 依赖注入在 Android 项目中的应用实践与最佳实践
在 Android 应用开发中,随着项目规模的不断扩大、业务逻辑的逐步复杂,如何管理组件之间的依赖关系成为极为关键的问题。依赖注入(Dependency Injection,DI)作为一种软件设计模式,通过将依赖关系交给框架去管理,能够极大降低代码之间的耦合度,提高代码的测试性和可维护性。如今在 Android 平台上,众多 DI 框架涌现,其中 Koin 以其轻量、简单、无注解的特点受到越来越多开发者的青睐。本文将详细讲解如何在 Android 项目中运用 Koin,从基础理论到实际案例,从最佳实践到调试原创 2025-04-10 17:58:09 · 805 阅读 · 0 评论 -
Android性能优化及调试技巧全攻略
这里奉上关于Android性能优化一篇详细的技术博客,全文约1万字,涵盖了Android应用性能的重要性、常见性能瓶颈、主流性能分析工具、常见优化策略及调试技巧等内容,附有实战案例、示例代码以及对比图示(图示均为占位示例),希望对各位开发者有所帮助!🚀原创 2025-03-28 11:13:00 · 1001 阅读 · 0 评论 -
Android adb 的功能和用法
Android Debug Bridge(简称 adb)是 Android 开发者必备的调试工具。它允许我们在开发设备(比如电脑)和 Android 设备(真机或模拟器)之间建立通信,并通过命令行执行各种操作,如安装应用、日志查看、调试应用、文件传输等。原创 2025-03-28 10:19:15 · 1236 阅读 · 0 评论 -
Android Compose 中的 Surface 和 Card:这对兄弟到底有啥不一样?
作为安卓开发者,咱们在写 UI 的时候总遇到这两个长得挺像的组件——Surface 和 Card。今天我就用做菜打比方,带你们扒开它们的底裤看看有啥本质区别(代码示例都现炒现卖,记得自己替换包名)。原创 2025-03-11 17:37:50 · 1014 阅读 · 0 评论 -
Android Compose Surface 完全指南:从入门到花式操作
今天咱们来聊聊 Compose 世界里那个既基础又强大的组件——**Surface**。这个看似简单的矩形区域,实际藏着不少宝藏玩法,准备好你的 IDE,咱们发车!原创 2025-03-11 17:27:23 · 700 阅读 · 0 评论 -
Android Compose MutableInteractionSource介绍
在 Android 开发中,Compose 是 Google 推出的现代化 UI 工具包,它让开发者能够更简洁高效地构建应用界面。而 `MutableInteractionSource` 是 Compose 中一个重要的组件,它可以帮助你处理用户与界面交互时的状态变化,尤其在处理交互反馈(比如点击、按下、聚焦等)时非常有用。接下来,我们将详细解析 `MutableInteractionSource` 的作用及如何在实际开发中使用它。原创 2025-03-11 17:09:08 · 754 阅读 · 0 评论 -
Android Compose: `remember` 与 `ViewModel` 保存数据的优缺点对比
在开发 Android 应用时,管理 UI 状态是一个不可避免的话题。Jetpack Compose 提供了两种常见的方式来保存和管理数据:`remember` 和 `ViewModel`。它们各有优缺点,适用于不同的场景。 本文将详细对比这两者在保存数据时的优缺点,帮助你在实际开发中做出更合适的选择。原创 2025-03-11 16:54:41 · 1106 阅读 · 0 评论 -
Android Compose remember 详解
在 Android Jetpack Compose 中,`remember` 是一个非常重要的概念。它帮助我们优化 UI 组件的重组(Recomposition)性能。简单来说,`remember` 可以缓存某些数据或对象,避免每次重组时重新计算或创建这些对象,从而提高性能并减少不必要的计算。原创 2025-03-11 16:51:20 · 991 阅读 · 0 评论 -
Android `%d` 与 `1$%d` 格式化的区别
在 Android 开发中,我们经常需要对字符串进行格式化处理,比如动态填充数字、日期、字符等。 其中,`%d` 和 `1$%d` 都是格式化占位符,但它们在使用上有一些不同。 本文将详细解析这两者的区别,并结合 Kotlin 代码示例帮助你理解。原创 2025-03-11 15:02:54 · 615 阅读 · 0 评论 -
Android Flow 示例
在Android开发的世界里,处理异步数据流一直是一个挑战。随着Kotlin的流行,Flow作为Kotlin协程库的一部分,为开发者提供了一种全新的方式来处理这些问题。今天,我将深入探讨Flow的设计理念,并通过具体的例子展示如何在实际项目中应用它。原创 2025-03-03 15:22:34 · 489 阅读 · 0 评论 -
Switch开关的防抖监听器
作为一个在安卓坑里摸爬滚打多年的老码农,肯定都遇到过这种场景:用户疯狂点击Switch开关,结果触发一堆重复回调。这种防抖需求就跟吃饭喝水一样常见。传统实现要么用Handler.postDelayed,要么用RxJava的throttle,但今天这个Kotlin扩展函数写法,直接把逼格拉满!原创 2025-03-03 15:17:25 · 741 阅读 · 0 评论 -
Android 常见View的防抖
在开发Android应用时,我们经常会遇到用户快速点击按钮或者频繁触发某个事件的情况。这种行为可能会导致不必要的重复操作,例如多次提交表单、重复加载数据等。为了避免这些问题,我们需要对这些事件进行防抖处理。本文将详细介绍如何在Kotlin中为常见的View添加防抖功能。原创 2025-03-03 15:06:53 · 501 阅读 · 0 评论 -
Android中的AtomicLong:原理、使用与实战指南
本文结合生产环境实战案例,带你彻底搞懂AtomicLong在Android多线程开发中的应用。全文包含大量Kotlin代码示例,建议收藏备用。原创 2025-03-03 14:31:24 · 1047 阅读 · 0 评论 -
Android Hilt 高级用法
Hilt 是 Android 官方推荐的依赖注入框架,虽然它提供了简单易用的 API,但在复杂项目中,我们可能需要用到更高级的特性,比如自定义作用域、多模块 DI、绑定接口、多构造函数注入等。原创 2025-02-27 14:43:42 · 603 阅读 · 0 评论 -
在 Android 应用中使用 Hilt
依赖注入(DI,Dependency Injection)是现代 Android 开发中提高代码可维护性和可测试性的重要工具。Hilt 是 Google 推出的一个基于 Dagger 的依赖注入框架,它简化了 DI 在 Android 应用中的使用。原创 2025-02-27 14:41:27 · 1289 阅读 · 0 评论 -
实现RecyclerView Item拖拽效果
在移动应用开发中,**列表项的拖拽排序**是提升用户体验的关键功能之一。无论是任务管理应用的优先级调整,还是相册应用的图片排序,流畅的拖拽效果都能让用户直观地感知操作结果。原创 2025-02-27 13:49:42 · 467 阅读 · 0 评论 -
自定义ToolbarView实战指南(Kotlin版)
看到标题你可能会问:系统自带Toolbar不香吗?确实香,但遇到这些场景就抓瞎了:- 设计稿要求标题栏带渐变背景+动态波浪线- 产品经理非要搞个不对称的返回按钮布局- UI设计师坚持标题和副标题要45度角重叠这时候再不自己动手撸View,就只能等着加班掉头发了!原创 2025-02-26 17:11:27 · 574 阅读 · 0 评论 -
Android老司机带你搞懂onCreate里的savedInstanceState
在Android里,当系统杀你Activity时(比如屏幕旋转/内存不足),这个Bundle就是用来存档的原创 2025-02-26 16:33:16 · 441 阅读 · 0 评论 -
BottomSheetDialog 无法直接设置圆角的解决方案
BottomSheetDialog 默认无法直接设置圆角,因为它的外层 FrameLayout 没有背景。我们需要给这个 FrameLayout 设置一个圆角背景,才能让圆角效果显现。原创 2025-02-10 10:46:22 · 498 阅读 · 0 评论 -
深入了解 Android 中的命名空间:`xmlns:tools` 和其他常见命名空间
在 Android 开发中,`xmlns` 命名空间是一个非常重要的概念。通过引入不同的命名空间,可以使用不同的属性来设计布局、设置工具属性或者支持自定义视图等。除了 `xmlns:tools` 以外,还有很多常见的命名空间可以在布局文件中使用。本文将介绍几个常见的命名空间及其用途,并详细探讨它们的使用场景。原创 2024-10-23 16:37:52 · 1562 阅读 · 0 评论 -
Android 布局 `android:textAlignment=“viewStart“` 和 `android:textAlignment=“textStart“` 的区别和联系
在Android开发中,`android:textAlignment` 属性用来控制文本在视图中的对齐方式。虽然 `viewStart` 和 `textStart` 听起来相似,但它们其实有不同的应用场景和功能。接下来,我们来深入探讨这两者之间的区别和联系。原创 2024-10-23 16:12:08 · 725 阅读 · 0 评论 -
装饰器模式知识分享:Android (Kotlin) 与 iOS (Swift) 实现
装饰器模式(Decorator Pattern)是一种非常重要的设计模式,它允许我们在不修改已有对象的情况下,动态地为其添加新的行为和功能。 这种模式广泛用于 Android 和 iOS 的开发中,特别是在我们想要扩展现有功能,而不破坏已有代码时。让我们从 Android 和 iOS 两个角度,详细了解一下如何使用装饰器模式。原创 2024-10-16 10:12:53 · 1375 阅读 · 0 评论 -
如何在 Android 中用 Kotlin 将 dp 转换为 px
我们在开发 Android 应用时,经常需要将 dp(密度无关像素)转换为 px(像素)。这是因为不同设备有不同的屏幕密度,使用 dp 可以保持在不同设备上的一致性。📱 但究竟如何将 dp 转换为 px 呢?让我来展示一个简单的 Kotlin 解决方案,快速搞定!😎原创 2024-09-26 17:39:40 · 919 阅读 · 0 评论 -
Kotlin 中的 `flatMap` 方法详解
`flatMap` 是一种将嵌套集合“展平”的操作。简单来说,`flatMap` 会对集合中的每个元素执行一个映射操作,并返回一个新的集合,然后它会将所有这些子集合合并成一个集合。原创 2024-09-12 15:12:57 · 1313 阅读 · 0 评论 -
Android Kotlin 中的 `groupBy` 方法详解
在 Kotlin 中,`groupBy` 是一个非常有用的集合操作函数。我们可以使用它按照某个标准,将集合中的元素分组,形成一个 Map,其中 key 是我们分组的标准,value 是符合这个标准的元素列表。本文将通过几个实际例子,来详细说明如何使用 `groupBy`,并且还会解释一些常见的应用场景。原创 2024-09-12 15:10:51 · 1128 阅读 · 0 评论 -
如何在Android项目中进行性能优化分析?
在开发过程中,性能优化是一个重要的话题。用户对于应用的性能有着非常高的期望:快速启动、流畅的操作体验、低内存消耗等。那么,作为开发者,我们如何才能在项目中进行性能优化分析呢?今天就来和大家聊聊这个话题!😊原创 2024-08-29 13:53:13 · 1319 阅读 · 0 评论 -
使用 LeakCanary 检测内存泄漏的完整指南
内存泄漏不仅会让我们的应用程序变慢,还可能导致崩溃!😱 今天,我们将介绍一个超级棒的工具——**LeakCanary**,它可以帮助我们快速发现和解决内存泄漏问题。现在,就让我们开始吧!原创 2024-08-29 13:42:16 · 2571 阅读 · 0 评论 -
Bitmap 压缩:质量 100% 与 90% 的区别是什么?
在 Android 开发中,我们经常会使用 `Bitmap` 来处理图片。为了优化性能和减少存储空间,我们通常需要对 `Bitmap` 进行压缩。但问题来了:压缩时的“质量”到底意味着什么?如果把质量从 100% 降到 90%,会有什么区别呢?今天我们就来聊聊这个话题。原创 2024-08-28 17:54:42 · 1239 阅读 · 0 评论 -
Kotlin 泛型小知识: `<T>`, `<out T>`, `<in T>` 的区别
我们是不是常常在 Kotlin 的代码中看到一些奇怪的符号,比如 `` 或者 ``?如果我们对这些泛型(Generics)符号还不太了解,没关系!今天我们就来聊一聊它们的区别,以及如何在实际开发中正确使用它们原创 2024-08-28 17:22:29 · 1183 阅读 · 0 评论 -
LiveData 数据倒灌问题:我们需要知道的那些事儿
大家是不是遇到过这样的情况?我们使用 `LiveData` 来监听数据变化,但是每次一个新的观察者(比如一个 `Fragment`)开始观察 `LiveData` 时,它总会立刻收到一份“旧数据”!这就是所谓的 **数据倒灌** 问题。原创 2024-08-28 17:10:47 · 1272 阅读 · 0 评论 -
使用 FlexboxLayout 实现灵活布局
在 Android 开发中,有时我们需要让子视图根据内容和可用空间灵活排列。这时候,`FlexboxLayout` 是一个非常强大的工具,它类似于 CSS 中的 `flexbox`,允许我们轻松创建响应式布局。在这篇博客中,我们将详细介绍如何在 Android 中使用 `FlexboxLayout` 来实现灵活的布局。原创 2024-08-15 13:59:58 · 1151 阅读 · 0 评论 -
Android 实现动态换行显示的 TextView 列表
在开发 Android 应用程序时,我们经常需要在标题栏中显示多个 `TextView`,而这些 `TextView` 的内容长度可能不一致。如果一行内容过长,我们希望它们能自动换行;如果一行占不满屏幕宽度,则保持在一行内。本文将带我们一步步实现这个需求,使用 `ConstraintLayout` 和 `Flow` 组件来轻松布局我们的 `TextView` 列表。原创 2024-08-15 11:11:08 · 1235 阅读 · 0 评论 -
Android 使用`layer-list`打造精美的背景
在 Android 开发中,`layer-list` 是一种强大的工具,可以帮助我们创建复杂的背景图形,🎨 这种方法可以大大提升应用的视觉效果。作为一名Android开发,理解和掌握 `layer-list` 的使用不仅可以让我们在 UI 设计上更加灵活,还能提升整体代码的可维护性。本文将深入探讨 `layer-list` 的原理,并结合实际示例为我们详细讲解如何使用它来创建精美的背景效果。原创 2024-08-15 10:57:58 · 1116 阅读 · 0 评论 -
Android Kotlin - 通过 URL Scheme 打开应用
在 Android 应用中,可以通过自定义 URL Scheme 或 Deep Links 打开应用。这允许你定义一个自定义的 URL 格式,使得当用户点击包含这个 URL 的链接时,系统可以识别并打开你的 APP。以下是详细的实现步骤和一些注意事项。原创 2024-08-12 11:03:57 · 881 阅读 · 0 评论 -
Android WebViewClient 的 `shouldOverrideUrlLoading` 方法
`shouldOverrideUrlLoading` 方法在 `WebView` 准备加载 URL 时被调用。这个方法让你有机会拦截 URL 加载过程并控制 URL 的处理方式。原创 2024-07-22 17:01:19 · 1474 阅读 · 0 评论 -
深入理解Android中的缓存与文件存储目录
本文将详细介绍`cacheDir`, `filesDir`, `externalCacheDir`, 以及`getExternalFilesDir(Environment.DIRECTORY_PICTURES)`这几个目录的用途和区别。原创 2024-07-17 16:25:15 · 2283 阅读 · 0 评论 -
深入解析 androidx.databinding.BaseObservable
在现代 Android 开发中,数据绑定 (Data Binding) 是一个重要的技术,它简化了 UI 和数据之间的交互。在数据绑定框架中,`androidx.databinding.BaseObservable` 是一个关键类,用于实现可观察的数据模型。本文将详细介绍 `BaseObservable` 的用法和原理,帮助你更好地掌握数据绑定技术。原创 2024-07-01 14:49:16 · 1171 阅读 · 0 评论 -
深入解析 androidx.databinding.Bindable 注解
在数据绑定中,`@Bindable` 注解是一个关键部分,它帮助我们实现双向数据绑定和自动更新视图。本文将深入解析 `androidx.databinding.Bindable` 注解的使用和原理。原创 2024-07-01 14:31:55 · 1071 阅读 · 0 评论