首页
学习
活动
专区
圈层
工具
发布

第1章 Kotlin是什么第1章 Kotlin是什么

第1章 Kotlin是什么 当下互联网大数据云计算时代,数以百万计的应用程序在服务器、移动手机端上运行,其中的开发语言有很大一部分是用流行软件界20多年的、强大稳定的主力的编程语言Java编写。...Kotlin从一开始推出到如今,已经有六年,2016年官方正式发布首个稳定版本,发展简史如下: 2011年7月,JetBrains推出Kotlin项目。...2016年2月15日,Kotlin v1.0(第一个官方稳定版本)发布。 2017 Google I/O 大会,Kotlin “转正”。...毫无疑问,Kotlin的设计是务实的 。发展和促进 Kotlin 的好处大于其成本, 在这个过程中, Kotlin 已经演变成了一个 JetBrains 的效率工具。...Kotlin是运行在JVM环境下的语言。首先我们要有JDK环境(Java环境配置此处省略)。 目前,Kotlin最新正式发布的版本是1.1.50。

1.5K21

Kotlin | 协程是什么?

而官网是我们接触任何技术最必要的门槛。所以请打开Kotlin中文网。很多人说kotlin官网教程很不详细,其实不然,kotlin中文网教程很详细。 回到正题: 什么是协程?...异步编程 体验 语言级 理念 注意上面几个关键点和一些实际使用,不难明白 Kotlin协程是基于Kotlin语法从而延伸的一个异步编程框架,它并没有带来多少性能上的体验,它能实现的,你用线程池同样也可以实现...那么,协程是什么? 协程就是一个基于Kotlin语法的异步框架,它可以使开发者以同步的方式,写成异步的代码,而无需关注多余操作。就这么简单 协程怎么用?...那上面注释中 挂起 是什么意思呢? 什么是挂起? 观察上面的打印日志,我们不难发现,在调用 delay 函数时,线程并没有停下,相对来说,只是我们的协程代码块被挂起,等待恢复。...查看源码,会发现,viewModel中的 viewModelScope 和 Lifecycle lifecycleScope,实现方式如出一辙: 本篇,我们没有过多的从源码上去追寻,协程到底是什么,尽量从语法

84710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    生命周期感知 Lifecycle

    生命周期所有者 LifecycleOwner 是一个单方法的接口,它表示这个类有生命周期。它有一个类必须实现的方法: getLifecycle()) 。...使用 Kotlin 协程来管理长时间运行的任务以及可以异步运行的其他操作。...为避免此问题,版本 beta2 及更低版本中的 Lifecycle 类将状态标记为 CREATED 而不调度事件,因此,即使直到系统调用了 onStop() 才调度事件,任何检查当前状态的代码都将获得真实值...任何要向 LiveData 类公开类似行为的类都必须实现 Lifecycle beta 2 及更低版本提供的解决方法。...注意: 为了简化流程并提供与旧版本的更好兼容性,从版本 1.0.0-rc1 开始,生命周期对象被标记为CREATED ,并且在调用 onSaveInstanceState() 时分派 ON_STOP ,

    1.6K20

    Kotlin中内联函数的作用是什么?

    在以前,因为学过一段时间Kotlin(并没有实际开发中用过),很多东西都忘记了,但是kotlin的代码看起来其实和Java没什么区别,感觉都差不多。所以不要认为 Kotlin 很难学。...Kotlin的内联函数属于Kotlin的高级特性之一,使用起来也非常简单。...没加 inline 之前 加上 inline 之后 解释就不用多说了吧,kotlin 自动帮我们将方法在编译期就加在了相应的调用处,免除了 java 中的入方法栈与退栈。...PS:(不要觉得kotlin好难,其实我也是现学现卖,虽然以前也看过一点基础,哈哈) 下面我们再扩展一些知识: 以下源于大家的回答,我并不能明白具体原因,所以需要周末补课。...reified java中,不能直接使用泛型的类型 kotlin可以直接使用泛型的类型 inline fun startActivity() { startActivity(Intent(this

    1.8K10

    ClickHouse 的 LTS 版本是什么?

    大家有没有想过,驱使我们去升级 ClickHouse 版本的动因是什么呢?...动因之一,显然是因为我们希望使用到 CH 的新功能或者新特性; 但是另外一个更显著的动因, 我认为是为了 Bug fix,即当前版本发现的 Bug,需要寄托于未来的版本进行修复。...ClickHouse LTS 版本的发布规则是: 每半年发布一次 LTS 大版本; 在上一个 LTS 半年后,选择当时至少被一个大客户使用过的 stable 版本作为新的 LTS 版本。...LTS 版本的小版本升级只会包含 Bug fix 和 Backports,所以稳定性会大大提升。...如果你是稳定性优先的用户,可以选择 LTS 版本; 如果你是新特性优先的用户,使用普通的 stable 版本即可。

    4.1K20

    JetBrains 发布了 Kotlin Multiplatform 的首个稳定版本

    作者 | Tim Anderson 译者 | 刘雅梦 策划 | Tina JetBrains 提供了 Kotlin Multiplatform 的首个稳定版本,支持跨 iOS、Android...2022 年的一项调查显示,Kotlin Multiplatform 应用程序的代码共享率高达 63% Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目 Compose...Compose Multiplatform 在桌面平台、macOS、Linux 和 Windows 上也是稳定版本,但在 iOS 上是 Alpha 版本,在 Web 上是实验性的。...JetBrains 还表示,他们的目标是在 2024 年发布面向 iOS 的 Compose Multiplatform 测试版本,Kotlin/Wasm 也在积极开发中。...使用 Kotlin 而不是 Java 的另一个原因是它的语言特性,包括 lambda 表达式、扩展函数、类型推理、null 安全等等。Kotlin 没有检查异常,因为这些不会提高生产力或代码质量。

    77520

    RxJava这么好用却容易内存泄漏?解决办法是...

    subscribe(aLong -> {                 Log.e("LJX", "onNext aLong=" + aLong);             });     } } kotlin...在上面的代码中,我们使用了as操作符,然后在kotlin中,as是一个关键字,使用起来就不是很方便,所以RxLife对kotlin做了适配工作,在kotlin中,我们可以使用life替代as操作符,并且更加的简洁...trello/RxLifecycle (3.0.0版本) 内部只有一个管道,但却有两个事件源,一个发送生命周期状态变化,一个发送正常业务逻辑,最终通过takeUntil操作符对事件进行过滤,当监听到符合条件的事件时...uber/AutoDispose(1.2.0版本) 内部维护了两个管道,一个是发送生命周期状态变化的管道,我们称之为A管道,另一个是业务逻辑的管道,我们称至为B管道,B管道持有A管道的观察者引用,故能监听...在上面的代码案例中,我们皆能看到RxLife.as(this)这行代码的身影,那这个as方法接收的是什么类型的参数呢?

    5K20

    Kotlin 1.4 版本正式发布:新功能一覽

    2020年 8 月 17 日,Kotlin 1.4 版本正式发布。...此次的版本更新花费了很多精力来提高 Kotlin 及其工具的性能和质量,例如高亮显示的速度提高了 1.5-4 倍,支持多种新的语言功能,例如 Kotlin 接口 SAM 转换。...也就是说,两种版本都将在一段时间内可用,旧版本和新版本都将处于实验模式; 当新的稳定后,它将成为默认版本。 新的前端(front-end)加速 开发团队期望新编译器提高的速度将来自新的前端实现。...Kotlin 简单务实,语法简洁而强大,安全且表达力强,极富生产力。 Java诞生于1995年,至今已有23年历史。当前最新版本是 Java 9。...Kotlin是一种现代语言(版本1.0于2016年2月发布)。它最初的目的是像Scala那样,优化Java语言的缺陷,提供更加简单实用的编程语言特性,并且解决了性能上的问题,比如编译时间。

    1.5K10

    深入了解 TheRouter 的 Kotlin Symbol Processing (KSP) 以及版本规划

    本文将深入介绍TheRouter的Kotlin Symbol Processing(KSP)的使用方法,并探讨其在项目中的优势。...TheRouter 的 Kotlin Symbol Processing(KSP)TheRouter 从1.1.4-rc2版本起,引入了 Kotlin Symbol Processing(KSP)作为注解处理的主力工具...KSP是一种基于Kotlin的编译期插件API,采用基于语法分析的方式,提高了编译速度,使得开发者能够更加高效地进行Android项目开发。以下是TheRouter的KSP使用方法:1....配置KSP插件classpath在项目根目录的build.gradle中引入KSP插件的classpath,版本号需要与项目中Kotlin版本号相匹配。...TheRouter 的版本规划TheRouter的版本规划分为三种,包括稳定版、预览版(含beta版)和公测版。了解这些版本的特点和获取方式对于项目的版本选择至关重要。

    1.2K10

    Jetpack组件之LifeCycle

    ;以及运行到 Chrome 、 Firefo, Safari 或 Edge等浏览器的 Web 版本上,Flutter 甚至还可以嵌入到 Cars, TVs 和智能家电中。...Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。...Architecture组件可帮助您设计健壮,可测试和可维护的应用程序。 Foundation组件提供了跨领域功能,例如向后兼容性,测试和Kotlin语言支持。...减少不一致 这些库可在各种 Android 版本和设备中以一致的方式运作,助您降低复杂性。 AndroidX 概览 AndroidX 命名空间中的工件包含 Android Jetpack库。...与support库一样,AndroidX命名空间中的库与 Android 平台分开提供,并向后兼容各个 Android 版本。

    1.5K20

    MPAndroidChart 用法解析和性能优化 - Kotlin & Java 双版本

    动态数据更新 Kotlin 版本 private fun updateChartData(newValue: Float) { val data = lineChart.data val...内存管理优化 Kotlin 版本 class ChartMemoryManager : LifecycleObserver { private var chart: LineChart...性能陷阱提醒 避免在主线程处理大数据 不要频繁调用 invalidate() 谨慎使用动画效果 注意 RecyclerView 中的图表复用 及时清理不需要的监听器 七、Java VS Kotlin 总结...特性 Kotlin 版本 Java 版本 空安全 使用 lateinit 和 ?....Kotlin 版本通常更加简洁、安全、可读性强,而 Java 版本更传统、直观,适合已有 Java 基础的开发者。 建议:新项目推荐使用 Kotlin + 协程,兼顾性能、可维护性与开发效率。

    15810

    Kotlin 1.3 终于正式发布,带来了稳定的 Coroutines、beta版本的KotlinNative

    此次版本更新包括: Coroutines 的正式发布 Kotlin/Native Beta 版本 contracts inline classes Coroutines 终于进入稳定版本,以后可以在生产环境中使用了...Kotlin / Native 进入 Beta 版本,可以将 Kotlin 代码直接编译为本机二进制文件。...另外,Kotlin 的多平台功能(多平台功能是 Kotlin 1.2、1.3的实验性功能)现在涵盖了 Android、JavaScript、iOS、Linux、Windows、Mac 甚至STM32等嵌入式系统...Kotlin 1.3 更多的更新内容:https://kotlinlang.org/docs/reference/whatsnew13.html 对于 Java 而言, Kotlin 是一个很好的补充。...我们公司的 Android 团队已经全面采用 Kotlin 开发 App。 最后,附上之前整理好的 Kotlin Coroutines 的思维导图。 Kotlin Coroutines.png

    99030

    【Jetpack更新之Fragment】1.3.0-alpha04 来袭,Fragment 间通信的新姿势

    文章介绍的很详尽,这里不再赘述 prepareCall 重命名 值得注意的地方是 prepareCall() 被命名为 registerForActivityResult() ❝注意:在版本处于 Alpha...因此 Alpha 版本不适合在生产上使用 ❞ ? 来自我的另一篇博客 target fragment API 被弃用 其实 target fragment API 早已被弃用 ?...弃用 target fragment API 那么,fragment 之间传递数据更干净的方式是什么呢?...这种传递数据的方式适用于 DialogFragment ,Navigation 中的 fragment 此更改还包括 -ktx 扩展功能以确保 kotlin 用户可以将 FragmentResultListener...} // 当fragment 处于DESTROYED 状态时 直接 return ,避免了异常 final Lifecycle lifecycle = lifecycleOwner.getLifecycle

    1.5K20
    领券