哆啦A梦小短腿
UiState设计

MVI 架构模式中的 UiState 设计:单一、嵌套与 `sealed class` 的应用

在 MVI (Model-View-Intent) 架构模式中,UiState 是核心概念之一,它代表了用户界面在任何给定时刻的完整且不可变的状态。理解如何有效设计 UiState 对于构建清晰、可预测且易于维护的应用至关重要。 1. MVI 中 ViewModel 的 UiState:单一性与最佳实践 在 MVI 架构中,推荐每个屏幕(或功能模块)只对应一个 ViewModel,并...

StateFlow和Channel

StateFlow 和 Channel 详解

在 Kotlin 协程中,StateFlow 和 Channel 都是用于异步数据流和通信的强大工具,但它们的设计理念和适用场景有显著区别。理解这些区别对于选择正确的工具至关重要。 StateFlow 详解 StateFlow 是一种热流(Hot Flow),它代表一个可观察的、单一的、可更新的状态。它始终持有一个当前值,并且会将这个最新值立即发送给新的订阅者。 核心特性: ...

compose副作用

Jetpack Compose 中的 Effect 全解析:掌握副作用处理的七种武器

在 Jetpack Compose 的声明式 UI 世界中,Composable 函数的核心职责是描述 UI 的状态,它应当是纯粹的、无副作用的。然而,在实际应用中,我们不可避免地需要与外界交互,例如:发起网络请求、读取数据库、响应生命周期事件等。这些操作被称为“副作用”(Side Effects)。为了在 Composable 的生命周期内安全、高效地处理这些副作用,Jetpack Com...

模拟面试

模拟面试

1、自我介绍 面试官您好,我叫何晓猛,今年 31 岁,本科学历,毕业于天津商业大学计算机科学与技术专业。至今已有近 9 年的 Android 开发经验。 我先后在威马汽车、北京大米未来科技、北京选课科技以及现在的众艺汇智等公司任职,涉及汽车出行、教育、直播等多个领域。在威马汽车期间,负责过充电优惠券、即时用车等功能开发;在大米未来科技参与了启蒙英语 App 从 0 到 1 的完整开发,主...

Compose屏幕适配

JetpackCompose屏幕适配

“受益”于目前 Android 手机各类屏幕尺寸长短不定、宽高比例大小不一的现状,屏幕适配 依然是 Android 应用开发时绕不开的问题 我们在日常开发中使用得最多的尺寸单位应该是 dp 了,Google 也推荐开发者尽量使用 dp 作为单位值,因为系统会根据屏幕的实际情况来完成 dp 和 px 之间的对应换算,使得同个 dp 值的显示效果在不同手机屏幕上不会相差太大。但直接使用 dp ...