
Kotlin
文章平均质量分 76
锐湃
这个作者很懒,什么都没留下…
展开
-
Kotlin select使用方法介绍
select是Kotlin 1.6中的特性,即选择最快的结果。select与async、Channel结合使用,可以大大提高程序的响应速度,还可以提高程序的灵活性、扩展性。转载 2025-03-03 03:29:03 · 56 阅读 · 0 评论 -
理解 Kotlin 中的协程生命周期
协程是轻量级的线程,可以在不阻塞主线程的情况下执行异步任务。它们提供了一种编写非阻塞代码的方式,使代码易于阅读和维护。在 Kotlin 中,协程围绕 Job 的概念进行结构化。Job 是协程的句柄。它表示其生命周期,并允许你管理其执行,包括启动、取消和检查其状态。Job 提供了协程在其生命周期中可能处于的几种状态。转载 2024-12-26 01:22:06 · 158 阅读 · 0 评论 -
Kotlin 中的密封类:理解其目的、优势
密封类(Sealed Classes)在 Kotlin 是一种限制继承的类类型。请把它想象成一个会员制的社团。在 Kotlin 中,可以定义一个密封类,并且只有某些类型可以成为这个“社团”的一部分。转载 2024-12-26 01:19:29 · 178 阅读 · 0 评论 -
Kotlin cacheable - 缓存一切函数
仓库:https://github.com/zsqw123/kotlin-cacheable替代 by Lazy?用 Kotlin cacheable 缓存函数计算结果作者:zsqw123链接:https://juejin.cn/post/7359467530186883111来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。转载 2024-11-19 20:36:32 · 50 阅读 · 0 评论 -
Kotlin测试: MockK 高级功能
在过去的一年里,MockK 在 Kotlin 世界中迅速崛起。用户通过提交问题和建议改进,积极帮助改进它。在最近的几个月里,MockK 引入了许多强大的功能。本文将介绍这些新可能性,帮助你提升测试水平。MockK 提供了相当广泛的高级功能集,包括:分层模拟、协程、验证超时、验证确认和记录排除、可变参数、拓展和顶层函数、对象和枚举模拟、模拟返回Nothing、构造函数模拟、私有函数模拟、属性模拟、类模拟、配置和清理。Kotlin测试: MockK 高级功能。转载 2024-11-19 20:30:56 · 232 阅读 · 0 评论 -
深入了解 kotlinx-datetime:配置与使用指南
提供了一组核心类型,用于处理日期和时间:• Instant:表示UTC时间刻度中的一个瞬时点。• Clock:用于获取当前时刻的时钟接口。:表示不依赖于时区的日期和时间。:表示仅包含日期部分的组件。:表示仅包含时间部分的组件。• TimeZone:提供时区信息,用于在Instant和之间进行转换。:表示两个瞬时点之间的时间差,包含日期和时间组件。这些类型的设计使得处理各种日期和时间操作变得更加清晰且直观。是一款非常实用的多平台Kotlin库,专注于解决日常开发中常见的日期和时间问题。转载 2024-11-08 10:42:32 · 206 阅读 · 0 评论 -
Kotlin @Parcelize 配置方法
这个注解告诉Kotlin 编译器要自动生成android.os.Parcelable的writeToParcel(), describeContents() 等方法,还有生成一个构建器CREATOR。一定要注意的是,这个注解仅仅在直接或间接实现了android.os.Parcelable的类才能使用,并且原始的构造属性才会被序列化。原文链接:https://blog.youkuaiyun.com/qq_36113746/article/details/127651311。Kotlin 1.4.20 及以后。转载 2024-10-25 20:11:06 · 364 阅读 · 0 评论 -
Kotlin中如何实现串行和并行任务
在 Kotlin 中,async和await是用于并发编程的关键工具。它们通常用于协程中,以实现异步编程模式。通过使用async和await,你可以编写简洁的代码来处理并行任务,还可以控制任务的执行顺序来实现串行任务。转载 2024-10-17 11:14:38 · 190 阅读 · 0 评论 -
快速了解 Android KTX
Android 提供了各种 Kotlin 类和方法等来简化开发的代码。常见的 Android KTX 模块有core-ktxfragmentlifecycle等等,下面介绍最常用的一些扩展方法。转载 2024-10-16 15:27:46 · 326 阅读 · 0 评论 -
Kotlin通过委托实现接口默认方法
在实现一个有多个方法的接口时,需要把所有方法进行实现,即使不需要实现该方法,也需要空实现。链接:https://www.jianshu.com/p/bc7ef8136f84。商业转载请联系作者获得授权,非商业转载请注明出处。Kotlin提供了委托机制,可以将接口实现委托给方法进行实现。这里可以自由选择需要实现的方法,而不需要重写所有接口方法。实现也很简单,通过委托,在匿名类里面用动态代理生成了委托类。通过这种方式,可以极大减少没有必要实现的接口方法。,该类实现接口所有默认实现。转载 2024-10-11 20:07:21 · 102 阅读 · 0 评论 -
Kotlin 干掉接口需要强制实现的方法
我相信很多的人都和我一样写过上面的代码,代码的实现没有什么问题,也没有什么性能问题,就是源码读起来非常的蛋疼,我们其实只需要 ActivityLifecycleCallbacks 中的两个回调方法,其他的方法我们其实不需要,由于这是接口的定义,所以我们必须实现,但是方法中又是空的,什么都没有干,所以上面的代码的可阅读性就非常差,如果我们能够把 ActivityLifecycleCallbacks 所有的空实现方法就干掉就清爽了。哈哈,上面的代码是不是瞬间清爽了,上面的代码是通过。中的代理/委托实现的。转载 2024-10-07 11:04:55 · 410 阅读 · 0 评论 -
Kotlin中如何优雅地退出循环
在 Kotlin 中,forEach是一个高阶函数,它在遍历集合时会对集合中的每一个元素执行给定的 lambda 表达式。若要在forEach中退出循环,return会返回到外层函数,而不是终止循环。因此,使用不能达到预期的效果。合理的做法是使用带标签的return或者是使用其他循环结构,如for循环。在forEach中你可以使用自定义的标签配合return,以退出循环。例如:1、 使用for2、 使用标签和forEach在这个例子中,的形式创建了一个标签为loop的作用域,然后。转载 2024-09-27 13:38:43 · 350 阅读 · 0 评论 -
解锁 combine 在 Android 开发中的应用
Kotlin 中的combine操作符是一个功能强大的工具,可以将多个流组合成一个流。在 Android 开发中,尤其是在使用 Jetpack Compose 时,它可以极大地简化状态管理和数据处理。本文将探讨combine操作符的用法和优点,并通过示例展示其在 Android 开发中的应用。转载 2024-09-14 13:24:02 · 611 阅读 · 0 评论 -
经典实战之用Kotlin泛型实现键值对缓存
Kotlin 中的泛型是一种允许类型参数化的特性。它可以增强代码的重用性、类型安全性和可读性。在实际编写代码时,通过泛型,你可以编写更为通用的类和方法,而不必具体针对某种特定类型。转载 2024-09-11 10:16:22 · 138 阅读 · 0 评论 -
扩展Result,让你的代码更简洁
在这篇文章中,我们介绍了如何扩展Result,来处理不同的结果分支,使我们的代码更加简洁。这种处理异常分支的方式叫做轨道编程(Railway Programming)。在 Github 中,也有很多用 Kotlin 实现轨道编程的项目,比如说,它内部自己定义了Result,而不是使用的 Kotlin 的Result,本文的很多例子就是根据这个项目来改造的,有兴趣的可以看看。转载 2024-08-19 16:17:14 · 183 阅读 · 0 评论 -
Kotlin Flow中的3个数据相关的操作符:debounce、buffer和conflate
debounce操作符用于过滤频繁发射的数据项,只保留最后一个在指定时间内发射的数据项。常用于处理用户输入、按钮点击等可能频繁触发的事件,避免不必要的操作频繁发生。bufferbuffer和conflate都是用于处理流的性能优化操作符。buffer通过引入缓存区降低背压,让上下游可以并发运行。conflate则直接跳过中间值,只保留最新的,大幅度减少处理频率,适用于对最新数据更敏感的场景。转载 2024-08-19 11:01:44 · 285 阅读 · 0 评论 -
Kotlin Flow 如何使用callbackflow
转载请标明出处:http://blog.youkuaiyun.com/zhaoyanjun6/article/details/121840157本文出自。转载 2024-08-14 17:43:28 · 395 阅读 · 0 评论 -
Kotlin Flow应用举例,launchIn 和collect用法及区别
收到消息:初始消息 消息已存储到数据库:初始消息 收到消息:你好,世界!收到消息:这是一个新的消息 消息已存储到数据库:这是一个新的消息。launchIn 用于在协程作用域中启动一个新的协程来收集消息流。launchIn 可以用于启动多个协程来处理同一个消息流,而 collect 只能启动一个协程。collect 会在当前协程中收集消息流,而 launchIn 会在新的协程中收集消息流。如果需要在新的协程中收集消息流,可以使用 launchIn。新消息2:Message("这是一个新的消息")转载 2024-07-25 11:13:29 · 175 阅读 · 0 评论 -
彻底搞懂kotlin协程,全网唯一,手撸协程
线程,线程池,EventLoop,Future 是异步的基础,也是 Kotlin 协程的骨架。结构化并发设计,挂起与恢复机制,语言级的状态机是 Kotlin 协程的灵魂,在前面 5 篇我们分别从骨架讲到灵魂,然后本篇我们综合利用这些知识构建了一个自己的极简版协程,灵肉自此合一,相信在看完这几篇文章之后我可以说你已经彻底掌握了 Kotlin 协程。历时近两个月,到这里,这个协程系列的主要部份就已经讲完了。全网唯一,手撸Flow😄。下一篇我们从 Flow 基础开始。示例源码练习。转载 2024-07-17 16:17:06 · 338 阅读 · 0 评论 -
10种Kotlin锁同步技术
多线程编程在 Kotlin 中具有巨大的潜力,可以构建响应迅速、高效的应用程序。然而,随着并发能力的增强,同步访问共享资源以防止数据损坏和竞争条件的挑战也随之而来。在本文中,我们将深入探讨 Kotlin 中的同步世界,探索确保应用程序线程安全和健壮性的最佳实践和技术。同步是协调多个线程对共享资源的访问的过程,以保持数据完整性和一致性。在 Kotlin 中,当涉及到对可变状态(如共享变量、数据结构或关键代码段)的并发访问时,同步至关重要。转载 2024-05-27 19:57:18 · 452 阅读 · 0 评论 -
Kotlin 数据类生成多个构造函数
使用 @JvmOverloads 注解可以自动为 Kotlin 类的构造函数生成所有可能的参数组合的重载版本。这使得在 Java 中可以使用不同数量的参数来调用 Kotlin 构造函数,而无需显式地为每个参数组合编写单独的构造函数。Kotlin 的data class默认在编译后自动生成包含所有属性的构造方法,正常使用时会需要多个重载函数,可以使用@JvmOverloads 注解。@JvmOverloads 注解用于在 Kotlin 类的构造函数上生成多个重载版本,以便与 Java 代码更好地进行互操作。转载 2024-05-11 10:40:56 · 343 阅读 · 0 评论 -
Kotlin-13.数据类(data class)
官方文档: http://kotlinlang.org/docs/reference/data-classes.html2.copy函数3.componentN函数-解构声明(Destructuring Declarations)4.两个等号==和三个等号===简书:http://www.jianshu.com/p/cb807bf83e44优快云博客: http://blog.youkuaiyun.com/qq_32115439/article/details/73611829转载 2024-05-09 11:21:05 · 979 阅读 · 0 评论 -
Kotlin中data class构造函数的问题
无参构造函数不是我想要的,这里需要的是一个有两个long类型参数的构造函数,已经找到解决办法了。转载 2024-05-09 11:15:17 · 312 阅读 · 0 评论 -
Kotlin之密封类与枚举
不同点:枚举只能有一个实例,而密封类的子类可以有多个实例,密封类的子类可以携带自己独有的状态参数以及行为方法来记录更多的实现信息以完成更多的功能,这是。如下实例:密封类的所有成员都继承本类,但是允许个别成员拥有自己特殊属性如 EXCELLENT_MARKS。当某个成员需要特殊属性的时候,用枚举就比较难实现这个需求,密封类就是为了解决这个问题而出现的。如下实例:当我们想知道优秀学生的名字的时候,只用枚举去实现就不好实现。相同点:所有成员都属于本类本身。进行判断类型,跟枚举类相似。转载 2024-04-25 10:00:07 · 287 阅读 · 0 评论 -
Kotlin技巧:作用域函数let、run、with、apply和also
关于Kotlin的作用域函数:let、run、with、apply和also。它们有一个共同点:它们都在对象上调用,在这些函数的作用域内,可以访问对象本身,而无需其名称。转载 2024-04-24 17:39:36 · 265 阅读 · 0 评论 -
Kotlin技巧:Collection管理集合的常用函数
groupBy函数将一个集合分割成一个map,其中每个键代表一个独特的标准,对应的值是一个列表,列表中的元素匹配这个标准。记住,清晰和有效的排序不仅有助于数据组织,而且还增强了代码的整体可读性和维护性。使用sortBy和sortedBy,Kotlin提供了一种直观的方法来实现这一点,使你的集合保持有序和代码库清洁。尽管它们的功能相似,但根据上下文和你正在处理的集合的类型,他们的应用略有不同。在这个例子中,sortedBy采用一个选择器函数{it},它简单地返回每个元素,列表是根据字符串的自然顺序排序的。转载 2024-03-28 17:43:57 · 234 阅读 · 0 评论 -
Kotlin 技巧: 集合使用 filter 和 filterNot、map 和 flatMap 转换集合
无论你在处理列表、集合还是任何其他集合类型,Kotlin 都提供了两个强大的函数来简化此过程:filter 和 filterNot。当原始集合中的每个元素被转换为一个项目的集合,如果你希望将这些集合平坦化为一个单一列表时,flatMap 特别有用。filter 函数允许你指定一个条件,并返回一个新集合,其中只包含满足此条件的元素。map 函数对集合中的每个元素应用给定的转换,返回一个列表,包含这些转换的结果。这里,filterNot 排除满足条件的元素,收集列表中的奇数。lambda 表达式。转载 2024-03-26 20:06:14 · 628 阅读 · 0 评论 -
Kotlin 技巧:使用序列提高大数据处理性能
因此,它不仅效益低下,而且比必要的工作更多,通过在每一步都制作新的列表,使用了更多的内存。序列一次处理一个元素:它取第一个元素(1),检查它是否是奇数(是),将它平方(1),并检查结果是否大于 10(不是)。当它到达 5 时,通过奇数检查,平方得到 25,由于 25 大于 10,迭代停止。通过使用序列,当定义过滤奇数的操作或定义平方数字的映射操作时,不会有任何计算发生。使用序列,操作不会立即执行。通过使用序列的懒赋值,Kotlin 允许更有效的数据处理,尤其是在可能无需处理整个集合以得到结果的情况下。转载 2024-03-13 19:14:18 · 94 阅读 · 0 评论 -
【Kotlin】类的初始化 ④ ( lateinit 延迟初始化 | ::属性名称.isInitialized 检查属性是否初始化 | lazy 惰性初始化 )
在定义属性时 , 可以使用 lateinit 关键字 设置该属性的 延迟初始化 , 在 实例对象 创建时不进行初始化 , 在使用该属性之前对其进行初始化即可;原文链接:https://blog.youkuaiyun.com/shulianghan/article/details/128723902。对于 lateinit 延迟初始化 的属性 , 在使用前可以执行。检查 , 查看该属性是否进行了初始化操作;, 如果不调用 , 则不进行初始化;, 如果忘了初始化直接调用就会报错;的 属性初始化操作 , 需要。转载 2024-03-12 14:48:21 · 784 阅读 · 0 评论 -
Kotlin技巧:使用内联函数&单例 避免性能开销
之前讨论了高阶函数,这种函数可以将其他函数作为参数,或者以函数作为返回值。在Kotlin的标准库的Collections文件中,可以找到很多高阶函数的例子。此函数接收一个lambda(匿名函数)作为参数,并对集合中的每个元素调用此函数。要理解inline关键词在其中起的作用,最好的方法是反编译我们的Kotlin字节码并检查其转换结果。在这里请稍微注意一下,你会看到翻译的代码在每次迭代时都调用println()函数。转载 2024-03-08 10:44:13 · 112 阅读 · 0 评论 -
Kotlin技巧:利用安全调用(?.)Elvis(?:)运算符 &命名参数和默认参数
在Kotlin中,函数可以有多个参数,记住参数的顺序或者仅靠位置理解他们的作用可能会很具有挑战性,特别是对于接受多个参数或者有相同类型参数的函数。:),该运算符提供了一种简明方式来处理在安全调用或任何可为空表达式后的null情况,允许开发者指定一个默认值或替代表达式,以便在前面的表达式评估为null时使用。:)都会简化对null的处理,提高代码的安全性和清晰度。这两个特点同时使用时,会减少对构建者模式的需要,这种模式通常在Java等语言中用来简化构建需要大量参数(其中一些可能是可选的)的对象。转载 2024-03-01 15:26:45 · 383 阅读 · 0 评论 -
Kotlin 的Triple集合(Triple<A,B,C>)
在 Kotlin 中,三元组是一个代表三个值的组合的通用类。它是 Kotlin 的标准库的一部分,适用于需要返回或处理三个相关值的情况,而不需要创建自定义数据类。三元组可以容纳可能不同类型的三个值,这些值通过 first,second 和 third 属性进行访问。转载 2024-03-01 15:21:37 · 448 阅读 · 0 评论 -
Kotlin技巧:通过标签引用管理Lambda表达式
通过添加numberLoop@标签到外部的forEach lambda,并使用return@numberLoop,清楚地指定我们想要继续外部循环的下一次迭代,而不是完全退出processNumbersWithLabels。通过提供一种清晰明确的方式来指定返回点,标签帮助维护Kotlin代码的可读性和可维护性,Kotlin中的标签引用对于管理嵌套的lambda表达式提供了优雅的解决方案,使得在复杂情况下控制执行流程变得更容易。标签能够标记一个lambda表达式,然后使用该标签明确地引用lambda的范围。转载 2024-02-29 19:26:46 · 95 阅读 · 0 评论 -
从原理对比分析,Kotlin中单例模式的5种实现方式
Kotlin提供了多种实现单例模式的方式,每种方式都有其自身的优缺点,大家可以根据实际需求选择合适的方式。无论是懒汉式、饿汉式还是双重检查锁等等,都能够确保在应用程序中只有一个实例存在。从原理对比分析,Kotlin中单例模式的5种实现方式。转载 2024-02-29 13:34:14 · 363 阅读 · 0 评论 -
Kotlin技巧:使用不变集合&高阶函数
Kotlin在其核心中认识到了可变状态相关的挑战,并通过listOf()、mapOf() 和 setOf() 函数提供了一种简练且优雅的方式来处理不可变集合。Java 9引入了用于创建不可变集合的工厂方法(List.of()、Map.of()、Set.of()),这是一个正确的方向,但是多年来,Java开发者不得不接受冗长或者引入额外的库像Guava来简化不可变集合的创建。这些操作在软件开发中被称为高阶函数,这是一个深深植根于函数式编程的概念,它让开发者编写更灵活、抽象和可重用的代码。让我们来看一个例子。转载 2024-02-27 19:45:51 · 74 阅读 · 0 评论 -
你真的懂 Kotlin 中的 by 关键字吗
持有实际的工作对象,负责将部分职责委托给这个对象。在委托类中声明的属性,使用by关键字将其委托给其他类。除了使用接口作为委托的对象外,我们还可以自定义委托类。自定义委托类需要实现属性委托的接口,即具备getValue和setValue方法。在上面的例子中,类实现了属性委托的接口,通过重写getValue和setValue方法实现了属性的读取和设置。Example类中的属性通过by关键字委托给了类。通过by关键字,Kotlin 提供了一种优雅而强大的委托模式实现方式。转载 2024-02-21 10:54:42 · 164 阅读 · 0 评论 -
项目中都可以使用的 8 种简单扩展方法
在设计自己的 View 时,通常从视图层次结构和标记中获取所需属性的方法是使用 TypedArray。然而,像所有资源一样,这样的容器对象必须正确地获取,然后在使用后释放。) {转载 2024-01-30 10:51:45 · 120 阅读 · 0 评论 -
kotlin协程flow retryWhen当加载失败后重试功能函数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/zhangphil/article/details/130092299。加载一次失败,重试1次成功。转载 2024-01-29 19:32:24 · 332 阅读 · 0 评论 -
retrywhen实现重连(kotlin)
相信大多数人都在用rxjava+retrofit网络框架,在用着框架的时候我们不难发现,一些复杂,连续请求不再复杂,那么我今天提到的retrywhen操作符作用是什么呐?版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/ZyClient/article/details/87251790。转载 2024-01-29 19:21:03 · 229 阅读 · 0 评论 -
协程的去抖动、节流、重试选项
Kotlin 语言长期以来一直是 Android 应用程序开发的事实上的标准,这也就不足为奇了——空类型安全性、高阶函数和许多其他方便的机制帮助它赢得了开发人员的欢迎和喜爱。协程就是一种大大简化了异步代码工作的机制。在本文中,通过向远程服务器发出请求的示例,将展示如何使用协程来调整异步操作随着时间的推移执行的顺序(去抖、限制、重试)。转载 2024-01-29 19:19:11 · 803 阅读 · 0 评论