kotlin

撩得Android一次心动4 小时前
android·笔记·学习·kotlin·compose
Jetpack Compose 知识点整理2【个人用】目录一、常见布局1.Row1.1 核心属性1.2 子元素专属修饰符(RowScope内使用)1.2.1 权重分配 - weight()
Ehtan_Zheng8 小时前
kotlin
Kotlin 伴生块:Android 项目怎么用,迁移时要注意什么写 Android 代码时,我们经常把常量、日志用的 TAG、工厂方法,以及 Fragment 的 newInstance() 放进 companion object。调用时直接写 类名.方法名(),很容易让人把它理解成 Java 的静态成员。 但伴生对象确实是一个对象。它背后的单例和嵌套类,会影响 Java 调用方式、反射、ProGuard 保留规则,以及生成的字节码。
JMchen8 小时前
kotlin·android studio·android jetpack
【Jetpack 内核实战 02】ViewModel:生命周期管理与数据持久化核心实战在上一篇中,我们完成了 Jetpack 专栏的环境搭建与工程初始化,统一了 Kotlin + Gradle Kotlin DSL + Version Catalog 的现代开发规范。从本篇开始,我们将正式进入核心组件的深度实战。
撩得Android一次心动15 小时前
android·笔记·学习·kotlin·android compose
Jetpack Compose 知识点整理3【个人用】“副作用”指的是:你在写UI代码时,偷偷干了和“画界面”无关的事情。在 Compose 的声明式模型中,可组合函数 (@Composable 函数) 会被框架频繁调用(重组)。很多时候我们不仅仅需要在可组合函数的内部进行UI操作,可能还会进行一些和UI无关的操作。例如:资源初始化和释放、异步操作等等。如果直接在可组合函数体内执行这些副作用,会导致严重问题:
Kapaseker15 小时前
android·kotlin
别再只会写 <T>:Kotlin 泛型的实战用法上一篇介绍了 Kotlin 泛型的基础。这一篇,我们先看类型参数之间的关系与约束,再把它们用于数据容器、结果包装、对象构建和数据转换,最后讨论运行时类型检查与反射的边界。
alexhilton1 天前
android·kotlin·android jetpack
Room Fts4:全文搜索替代 SQL LIKE本文译自「Scaling Android Search: Room @Fts4 vs SQL LIKE」,原文链接proandroiddev.com/scaling-and…,由Oğuzhan Aslan发布于2026年10月11日。
hai_android1 天前
android·kotlin·android jetpack
把 Android App 打包成系统应用(System App)只有被平台私钥签名的 APK,放到 /system/priv-app/ 下并设置 android:sharedUserId="android.uid.system",才能成为真正的系统应用,获得 READ_PRIVILEGED_PHONE_STATE、MOUNT_UNMOUNT_FILESYSTEMS 等特权权限。
JMchen2 天前
android·kotlin·android jetpack
【Jetpack 内核实战 01】开篇:Jetpack 组件全家桶核心逻辑与专栏完整规划各位 Android 开发者好,欢迎来到《Jetpack 内核实战:ViewModel + LiveData + Room + DataStore 通关指南》系列专栏。 如果你还在为屏幕旋转导致数据丢失头疼,为 SharedPreferences 的 ANR 问题烦心,为项目代码耦合严重难以维护发愁,那么这套专栏正是为你准备的。我们将从 0 到 1 拆解 Google 官方推荐的架构组件,以一个完整的记事本 App 为实战载体,带你彻底吃透 ViewModel、LiveData、Room、DataStor
mmsx2 天前
android·kotlin
Android 静默失败实录:五个没有日志的线上事故崩溃会留下堆栈,静默失败只留下一个"点了没反应"——后者才是最贵的。线上报来一个问题:"点某个功能没反应,每天都有一两次。"三条常规排查路同时走空——崩溃上报平台一条记录都没有,logcat 抓复现只有一堆正常日志、没有 FATAL EXCEPTION,本地加打印也只看到一句 D/Test: uncaughtException: 之后进程就没了,冒号后面是空的。异常对象根本没进日志。
hai_android2 天前
android·kotlin·android jetpack
从零实现一个支持跨进程(IPC)的自定义 Toast本文基于一个真实 MVVM 项目(Kotlin + ViewBinding),完整讲解如何手写一个"长得像 Toast、但完全可控、还能跨进程调用"的消息提示组件。 全文采用 代码 + 逐行注释 的方式展开,所有代码均可直接运行。
熊猫钓鱼>_>2 天前
开发语言·kotlin·agent·harmonyos·openharmony·适配·华为云码道
Kotlin Multiplatform for OpenHarmony 实战:kotlinx-coroutines 结构化并发适配本文记录 kotlinx.coroutines(Kotlin 官方协程库)在 OpenHarmony 上的真实适配过程。核心思路是语义等价复刻:ArkTS 本身是单线程异步模型(事件循环 + Promise),与 Kotlin 协程“挂起不阻塞线程”的心智完全同构,因此无需重写协程运行时,只需用 ArkTS 原生 Promise 承载挂起/并发语义,把 API 形状与原库对齐。全文按三层架构展开:语义层(Coroutines.ets 定义 CoroutineScope / Job / Deferred<T
熊猫钓鱼>_>2 天前
开发语言·华为·kotlin·华为云·json·harmonyos·code
Kotlin Multiplatform for OpenHarmony 实战:kotlinx-serialization JSON 适配本文属于 KMP 三方库鸿蒙化适配合集,聚焦 Kotlin 官方序列化库 kotlinx.serialization 在 OpenHarmony 上的适配实践。文章提出「语义层 + 引擎层 + 验收页」的三层架构:语义层用 JsonElement 树与 KSerializer<T> 契约保留原库的纯映射,引擎层复用 ArkTS 自带的 JSON 设施完成最终编解码,验收页在真机上验证嵌套对象的序列化与反序列化。全文只讲本仓库真实落地的代码,并总结了 JSON.parse 类型摩擦、严格模式禁参数属性、手写
倚楼听风语2 天前
java·算法·kotlin
Kotlin 协程与 suspend 原理详解从"怎么写"到"编译器把它变成什么",再到"运行时怎么调度"的完整知识文档。suspend 是 Kotlin 用来标记可以被挂起的函数的修饰符。它的特点:
事圆则缓3 天前
开发语言·windows·kotlin
Kotlin 集合与序列:给页面一份清楚的数据Android 消息页从仓库取回通知列表,准备筛出未读项并按会话显示。代码里参数类型写着 List,页面却可能在下一次刷新前看到内容变化;图片接口要的是 ByteArray,手上的 List<Byte> 又不能直接传。问题牵涉的并非一套“集合语法”,而是数据能否被修改、怎样组织、何时计算。以下以 Kotlin 2.4.21 及 Android 的 JVM 目标为基线。
事圆则缓3 天前
android·开发语言·kotlin
Kotlin 异步与并发:从一次搜索请求走到状态流搜索页连续输入两个关键词,第二次结果先回来,第一次结果随后把界面覆盖了。给网络函数加上 suspend 并不能自动解决这个问题:请求属于谁、旧任务何时取消、结果怎样送到界面,是三件需要一起设计的事。**协程用作用域组织任务,用挂起函数表达等待,用 Flow 传递随时间变化的值;共享可变状态还要单独处理并发访问。**本文以 Kotlin 2.4.21 为语言基线,launch、Flow、Mutex 来自 kotlinx.coroutines,Android 生命周期 API 来自 AndroidX。
事圆则缓3 天前
android·开发语言·kotlin
Kotlin学习导航:从知识树走到项目与面试一个 Android 页面同时碰到接口空值、列表转换、Java SDK、协程请求和 Compose 状态时,按语法关键词查资料很容易越查越散:?. 看懂了,仍不知道平台类型从哪里来;Flow 会收集了,页面退出后任务却还在跑。这八篇按“数据边界 → 行为与状态 → 平台边界 → 并发与交付”串起来读,每篇解决一个明确的问题,也能单独打开查阅。
mmsx3 天前
android·kotlin
Android 插件化架构:40 个 Gradle 模块的拆分、通信与共存拆是几天的活,守是每一天的活——难的不是拆出 40 个模块,而是让每条边界一直有人守着。一个 40 个 Gradle 模块的 Android 工程,最初只有一个 app module。几百个 Activity 挤在同一棵源码树里,改一行公共类,全量编译 8 分钟起步。真正压垮团队的不是这 8 分钟本身,而是它带来的行为变化:没人敢动公共类了,改动被攒到下班前才编译一次,为了省掉一次编译,两个毫不相关的需求被塞进同一个分支。
mmsx3 天前
android·kotlin
Android 不改一行源码:用 AspectJ 做三类拦截AspectJ 织入的是 Java 字节码的调用点,不是方法的实现体。有些麻烦,你第一反应绝不会是「去改别人的源码」。
熊猫钓鱼>_>3 天前
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证欢迎加入 KMP&CMP 鸿蒙社区:https://atomgit.com/CPF-KMP-CMP适配后仓库地址(AtomGit,待提交):https://atomgit.com/oh-tpc/ohos_kotlin-csv