BroadcastReceiver
🚨 什么是 BroadcastReceiver?BroadcastReceiver 是 Android 提供的一个机制,用于在应用之间或系统与应用之间传递消息。比如: 当手机接收到短信时; 电池电量变化; 网络连接变化; 你自己在 App 内发出一个自定义事件。 这些“消息”叫做广播(Broadcast),而负责“接收广播”的组件就是 BroadcastReceiver。 🧠 工作原理: 某个组件(系统或 app)发送一个广播(用 sendBroadcast()); Android 系统会根据你注册的广播类型,找到匹配的 BroadcastReceiver; BroadcastReceiver 会执行你定义的逻辑(通常在 onReceive() 方法里写处理逻辑); 📦 BroadcastReceiver 分类1. 静态注册 在 AndroidManifest.xml 中注册 会在 App 没启动的情况下也能接收到广播(某些系统广播) 12345<receiver android:name=".MyReceiver"> ...
Kotlin中的内联函数
🌟 什么是内联函数?简单说: 内联函数就是在编译时将函数的调用代码“展开”为函数体本身,从而避免函数调用的开销。 通常高阶函数(比如 map, filter, let, run 等)都会带来额外的开销,因为它们需要创建函数对象、维护调用栈。而使用 inline 关键字修饰的函数在编译时会将其代码“拷贝”到调用处,避免这些额外开销。 🧪 基本语法12345inline fun doSomething(action: () -> Unit) { println("Start") action() println("End")} 调用方式: 123doSomething { println("Hello inline")} ⚡ 编译后,大致等价于: 123println("Start")println("Hello...
Kotlin的高阶函数详解
Kotlin的高阶函数详解 Kotlin 的高阶函数(Higher-Order Functions,简称 HOF)是函数式编程的一个重要特性,能够显著增强语言的表达力。高阶函数是指那些可以接受其他函数作为参数,或者返回函数的函数。 1. 高阶函数的定义基本定义高阶函数指的是: 接受函数作为参数 或者返回函数 示例:接受函数作为参数12345678910111213fun <T> List<T>.customFilter(predicate: (T) -> Boolean): List<T> { val result = mutableListOf<T>() for (item in this) { if (predicate(item)) { result.add(item) } } return result}val numbers = listOf(1, 2, 3, 4, 5,...
Kotlin的扩展函数和运算符重载
Kotlin 的扩展函数(Extension Functions)和运算符重载(Operator Overloading)是两个强大又常用的特性,用于让代码更简洁、表达力更强。 ✅ 扩展函数(Extension Functions)定义:在不修改原类源码的情况下,为类添加新的函数。 🌟 语法123fun ClassName.functionName(params): ReturnType { // 函数体} 🧪 示例12345678fun String.lastChar(): Char { return this[this.length - 1]}fun main() { val s = "Hello" println(s.lastChar()) // 输出:'o'} 📌 注意 this 代表接收者对象(上例中是 String) 扩展函数不会真正修改原类,只是通过静态方式实现“扩展” 若类有成员函数与扩展函数同名,成员函数优先 ➕...
延迟初始化与封装类
🔹 1. 延迟初始化 (lateinit)✅ 用途:当你不想在定义变量时立刻初始化它,但又确定在使用前一定会初始化(比如依赖注入、测试、Android View 绑定等)。 ✅ 语法:12lateinit var name: String ✅ 注意事项: 只能用于 **var**,不能用于 val。 只能用于 非空类型的引用类型(不能是原始类型如 Int、Double)。 使用前如果没初始化,会抛出 **UninitializedPropertyAccessException**。 ✅ 示例:123456789101112131415class User { lateinit var nickname: String fun initNickname() { nickname = "KotlinFan" } fun printNickname() { if (::nickname.isInitialized) { ...
kotlin lambda编程
kotlin lambda编程Kotlin 的 Lambda(匿名函数)是函数式编程的核心特性之一,允许你以简洁的方式编写代码,尤其适用于集合操作、回调、DSL(领域特定语言)等场景。 1. Lambda 表达式基础Lambda 表达式是一个匿名函数,语法如下: 12val sum: (Int, Int) -> Int = { a, b -> a + b }println(sum(2, 3)) // 输出 5 语法说明: { 参数1, 参数2 -> 函数体 } val sum: (Int, Int) -> Int 明确声明了函数类型,表示它接收两个 Int 并返回 Int。 2. 使用 it 关键字当 Lambda 只有一个参数时,可以用 it 代替参数名: 12val square: (Int) -> Int = { it * it }println(square(4)) // 输出 16 3. Lambda 作为函数参数Lambda 可以作为参数传递给函数: 123456fun...
Intent
显式Intent与隐式Intent ChatGPT 说:在 Android 中,Intent(意图) 是组件(Activity、Service、BroadcastReceiver)之间进行通信的机制。Intent 主要分为两种类型: 1. 显式 Intent(Explicit Intent)显式 Intent 直接指定目标组件(Activity、Service)的 类名,用于在 应用内部 启动组件。 示例12Intent intent = new Intent(this, SecondActivity.class);startActivity(intent); 特点: 适用于应用内部 组件间的交互,比如从 MainActivity 跳转到 SecondActivity。 指定目标类名,不会让系统去匹配 intent-filter。 性能更高,因为不需要系统查找匹配的组件。 2. 隐式 Intent(Implicit Intent)隐式 Intent 不指定 目标组件的类名,而是使用 动作(Action)、类别(Category)、数据(Data)...
空指针检查
Kotlin 通过 空安全(Null Safety) 机制减少了空指针异常(NullPointerException,NPE)。以下是 Kotlin 中处理空指针的常见方式: 1. 可空类型 (?)Kotlin 默认所有变量都不能为空。如果需要允许 null,必须显式声明: 12var name: String? = "Kotlin"name = null // 允许赋值 null 2. 安全调用 (?.)当变量可能为 null 时,可以使用 安全调用 来避免 NPE: 12val length: Int? = name?.length // name 为 null 时,length 也为 null 3. Elvis 运算符 (?:)提供默认值,避免 null 影响程序逻辑: 12val length: Int = name?.length ?: 0 // name 为 null 时,length 取 0 4. 非空断言 (!!)强制告诉编译器变量不为空,否则抛出 NullPointerException: 12val length:...
test
cby666
第一篇文章
这是我的第一篇文章