Kotlin
文章平均质量分 85
Kotlin
字节卷动
字节卷动 | CSDN博客专家
博客知识包括:Android、ASM、OpenGL、C++、Java、Python、Shell、Jenkins、Gitlab、Git、SVN等相关进阶知识。
展开
-
【Android面试八股文】你能说说Kotlin如何取消超时任务吗?
是 Kotlin 协程中处理超时任务的一个有用工具。它允许我们在超时时优雅地返回一个特殊值,而不是抛出异常。这使得我们可以更加灵活地控制协程的执行流程,特别是在需要处理超时逻辑时。通过使用,我们可以提高程序的健壮性和用户体验。原创 2024-11-03 23:15:09 · 3 阅读 · 0 评论 -
【Android面试八股文】你能说说kotlin怎么实现不能取消的任务吗?你知道NonCancellable吗?
可以用于结构中的任何部分,具体取决于您希望在哪个阶段确保代码不被取消。通常,将其放在finally块中是为了确保无论发生什么情况,某些关键的清理工作都能被执行。但是,根据您的具体需求,您可以灵活地在任何地方使用。是 Kotlin 协程中一个强大的工具,它允许开发者在协程被取消时执行关键的清理工作。使用时,需要仔细考虑代码的设计,确保在任何情况下都能正确地释放资源和处理异常。通过合理使用,可以提高程序的健壮性和可靠性。原创 2024-11-03 23:01:22 · 0 阅读 · 0 评论 -
【Android面试八股文】你能说说kotlin取消协程有什么副作用以及如何修复吗?
use 函数提供了一种简洁的方式来自动管理资源,它减少了样板代码,并确保了资源在使用后被自动关闭。try-catch-finally 块提供了更多的控制,允许你在异常发生时执行额外的清理工作,但它需要更多的代码。在两种情况下,资源管理都是非常重要的,以避免资源泄露和其他潜在的问题。协程取消的副作用主要体现在资源管理和数据一致性上。通过在finally块中释放资源和使用use函数管理实现了Closeable接口的资源,我们可以有效地修复这些副作用。原创 2024-11-03 22:34:42 · 20 阅读 · 0 评论 -
【Android面试八股文】你能说说kotlin怎么取消CPU密集型任务吗?
isActive是一个可以被使用在CoroutineScope中的扩展属性,检查Job是否处于活跃状态。ensureActive(),如果job处于非活跃状态,这个方法会立即抛出异常。yield函数会检查所在协程的状态,如果已经取消,则抛出CancellationException予以响应。此外,它还会尝试出让线程的执行权,给其他协程提供执行机会。原创 2024-11-03 21:57:59 · 16 阅读 · 0 评论 -
【Android面试八股文】你能说说你对协程生命周期的理解吗?
在Kotlin协程编程中,理解协程的生命周期对于编写高效、健壮的并发代码至关重要。本文将详细介绍协程的生命周期,以及如何通过Job对象来管理这些生命周期。原创 2024-11-03 13:45:22 · 15 阅读 · 0 评论 -
【Android面试八股文】你能说说协程的作用域构建器有哪些以及他们的区别吗?(coroutineScope、runBlocking和supervisorScope)
和都是协程中的作用域构建器,它们都可以用来等待多个协程的完成。主要的区别在于会阻塞当前线程,而则不会。选择使用哪一个构建器取决于你的具体需求,以及你是否需要在等待协程完成时释放线程以供其他任务使用。理解这些区别对于编写高效、响应式的协程代码至关重要。原创 2024-11-03 00:11:55 · 213 阅读 · 0 评论 -
【Android面试八股文】你能说说Kotlin协程有哪些启动模式以及它们直接有什么区别吗?
通过上述示例,我们可以看到Kotlin协程的四种启动模式在调度时机和取消响应上有明显的区别。DEFAULT模式下,协程创建后立即调度,对取消响应最敏感;ATOMIC模式下,协程在到达第一个挂起点之前不响应取消;LAZY模式下,协程只有在被需要时才开始调度;而UNDISPATCHED模式下,协程在当前调用栈中立即执行,直到遇到挂起点。原创 2024-11-03 00:03:50 · 116 阅读 · 0 评论 -
【Kotlin学习之旅】解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented
一、错误描述今天实现android.hardware.SensorEventListener接口的时候,然后运行程序报错:2021-12-21 09:46:49.256 16655-16655/com.oyp.openglesdemo E/SensorManager: Exception dispatching input event.2021-12-21 09:46:49.258 16655-16655/com.oyp.openglesdemo E/AndroidRuntime: FATAL EX原创 2021-12-21 10:07:35 · 1284 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin使用writeText写文件,使用readText读取文件内容
一、需求描述需要使用kotlin来读写文件内容,下面写了一个工具类测试一下,如下所示:package com.oyp.kotlinimport org.junit.Testimport java.io.*class FileTest { companion object { private const val TAG: String = "FileTest" } @Test fun testSave() { val conten原创 2021-04-23 18:07:12 · 1227 阅读 · 0 评论 -
【Kotlin学习之旅】为什么 Java 后端开发没有大规模采用 Kotlin?
在使用了 Java 15 年后,我写了第一行 Kotlin 代码,到现在已经差不多 5 年了。我们的团队用Utterlyidle替代 Spring,用Totallylazy进行函数式编程。我们是 IntelliJ 的忠实粉丝,并试着充分利用它提供的 Java 工具。那个时候,我们不只使用 Java。有一些团队对 Scala 感兴趣,并用它开发了一些服务。但是,因为 Scala 与 Java 代码库协作的复杂性以及缓慢的构建时间,对于我们大多数人来说,它并没有太大吸引力。2017 年,谷歌宣布 Kotli转载 2021-04-20 10:02:51 · 548 阅读 · 0 评论 -
【我的Android进阶之旅】异常Default interface methods are only supported starting with Android N (--min-api 24)
文章目录一、问题描述二、分析问题2.1 Java 8概述2.2 Android和Java关系2.3 通过 desugar 字节码转换实现 Java 8 语言功能支持。2.4 Java 8 语言功能支持(Android Gradle 插件 3.0.0 及更高版本)2.5 Java8的默认方法 default method2.5.1 概述2.5.1.1 为什么要有默认方法2.5.1.2 语法格式2.5.2 默认方法(default)2.5.2.1 实例2.5.2.2 默认方法的继承2.5.2.3 类优先原原创 2021-03-31 11:23:06 · 880 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin实现101个C#的LINQ示例,让你领略一下Kotlin代码的魅力
一、LINQ简介1.1 什么是LINQLINQ是Language Integrated Query的简称,它是集成在.NET编程语言(例如:C#、VB.NET等)中的一种特性,目的是为.NET Framework_提供更加通用和便利的信息查询方式,并且它对数据源提供了广泛的支持,而不仅仅局限于关系型数据库和XML。LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源,比如A转载 2021-03-29 09:36:21 · 3059 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin的位运算符讲解
虽然Kotlin也提供了与Java功能完全相同的位运算符,但是这些位运算符都不是以特殊字符给出的,而是以infix函数的形式给出的。因此,程序只能用函数名来执行这些位运算符。一、位运算符Kotlin支持的位运算符同样有如下7个。运算符表示含义and(bits)按位与。当两位同时为1时才返回1。or(bits)按位或。只要有一位为1,就返回1。inv(bits)按位非。单目运算符,将操作数的每个位(包括符号位)全部取反。xor(bits)按位异或。当两位相同原创 2021-03-20 17:36:15 · 1451 阅读 · 0 评论 -
【Kotlin学习之旅】使用Kotlin实现常见的对称加密、非对称加密、消息摘要、数字签名的demo
文章目录Demo 介绍一、对称加密二、非对称加密三、消息摘要四、数字签名五、Demo地址Demo 介绍使用Kotlin实现常见的对称加密、非对称加密、消息摘要、数字签名的demo一、对称加密算法DESAES特点可逆、加密速度快,可以加密大文件二、非对称加密算法RSA特点可逆、加密速度慢公钥加密、私钥解密;私钥加密、公钥解密。公钥互换三、消息摘要算法MD5SHA1SHA256特点不可逆,加密后不可破解加密后秘文长度原创 2021-03-20 16:08:06 · 948 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin的类型别名typealias
一、类型别名typealias介绍Kotlin提供了类似于C语言的typedef 的功能:可以为已有的类型指定另一个可读性更强的名字。Kotlin提供了typealias来定义类型别名。typealias语句的语法格式为:typealias 类型别名 = 已有类型如果类型名称太长,你可以另外引入较短的名称,并使用新的名称替代原类型名。它有助于缩短较长的泛型类型。 例如,通常缩减集合类型是很有吸引力的:// 为Set<Network.Node> 指定更短的别名NodeSet t原创 2020-08-13 20:59:37 · 2080 阅读 · 6 评论 -
【Kotlin学习之旅】Kotlin的字符串类型
一、字符串类型介绍Kotlin的字符串有两种字面值(Literal),分别如下所示:类型描述转义字符串转义字符串可以有转义字符,转义字符串很像Java字符串原始字符串原始字符串可以包含换行和任意文本。原始字符串需要用3个引号引起来。二、字符串类型示例代码如下所示:fun stringTest() { //定义普通字符串 var str = "欧阳鹏" println(str.length) //定义原始字符串 va原创 2020-08-13 20:07:55 · 953 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin的Elvis运算
Elvis运算是一个小技巧,其实就是if else 的简化写法。一、示例程序下面来一个示例对比代码,如下所示:fun elvisTest() { var b: String? = "oyp" var len1 = if (b != null) b.length else -1 //输出3 println(len1) b = null var len2 = b?.length ?: -1 // 输出 -1 println(len2)原创 2020-08-13 19:34:54 · 1235 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin的数值型之间的类型转换
Kotlin是一门强类型的语言,因此编译器对类型检查非常严格,这种严格保证了Kotlin程序的健壮性,因此Kotlin不同类型的值经常需要进行相互转换,数值型之间的变量和值也可以相互转换。一、整型之间的转换不同整型的变量能支持的表数范围是不同的。 如下所示:ByteByte型证书在内存中通常占8位,表数范围是 -128~127。 兼容Java的byte和Byte类型ShortShort型证书在内存中通常占16位,表数范围是 -32768(-2的15次方)~32767(2的15次方减1)原创 2020-08-13 12:00:43 · 8628 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin的字符型
一、简介字符型统筹用于表示单个的字符,字符型必须使用单引号(‘)括起来。Kotlin语言使用16位Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Kotlin程序支持各种语言的字符。字符型值有以下3种表现形式。直接通过单个字符来指定字符型值,如‘A’、‘9’和‘0’等通过转义字符表示特殊字符型值,如‘\n’和’\t’等直接使用Unicode值来表示字符型值,格式是‘\uXXXX’,其中XXXX代表一个十六进制的整数。二、Kotlin原创 2020-08-12 21:14:12 · 1130 阅读 · 0 评论 -
【Kotlin学习之旅】Kotlin关键字(keyword)
一、简介在Kotlin语言中有一些具有特殊用途的单词被称为关键字(keyword),当定义标识符的时候,不要让标识符与关键字相同,否则将引起错误。比如,下面的代码将会编译出错: var class = 2二、Kotlin关键字分类Kotlin关键字可分为如下3类。硬关键字:这些关键字无论在什么情况下都不能作为标识符。软关键字:这些关键字可以在它们不起作用的上下文中用作标识符。...原创 2018-12-18 15:23:17 · 2476 阅读 · 4 评论 -
【Kotlin学习之旅】Kotlin的null安全
一、简介null安全可以说是Kotlin语言对Java的重大改进之一,这样可以避免Java变成时令人恐惧的NullPointerExcept(简称NPE)。Kotlin 类型系统的设计目标就是希望消除代码中 null 引用带来的危险。Kotlin 的类型系统致力于从我们的代码中消除 NullPointerException. 只有以下情况可能导致 NPE:明确调用 throw Null...原创 2018-12-22 16:31:59 · 4441 阅读 · 0 评论