草庐IT

Kotlin-Flow

全部标签

五分钟技术趣谈 | 试论Android异步框架Kotlin协程

Part01 什么是协程 作为开发人员尤其是客户端应用开发,我们一直面临着需要解决的问题——如何防止我们的应用程序被阻塞。考虑下面一个异步应用场景。客户端顺序进行3次网络请求,最后更新UI展示结果。图片图1异步场景有多种方法实现上述需求,主流的包括:回调Rx(反应式扩展)协程1.1回调方式图2 回调代码示例异步回调的方式虽然实现了需求,但是这种结构的代码无论是阅读还是维护起来都是极其糟糕的。这种回调函数的层层嵌套耦合,亲切地称为"回调地狱"。1.2Rx方式图3Rx代码示例Rx系列的链式调用,是在协程之前推荐的做法,RxJava丰富的操作符、简便的线程调度、异常处理使得大多数人满意。但是还有没有

Android的Gradle、Studio、Java、Kotlin版本兼容

AndroidGradle插件和AndroidStudio兼容性AndroidStudio版本所需插件版本Hedgehog-2023.1.13.2-8.2Giraffe-2022.3.13.2-8.1Flamingo-2022.2.13.2-8.0ElectricEel-2022.1.13.2-7.4Dolphin-2021.3.13.2-7.3Chipmunk-2021.2.13.2-7.2Bumblebee-2021.1.13.2-7.1ArcticFox-2020.3.13.1-7.0Gradle版本和Java版本对应关系Java版本第一个支持它的Gradle版本82.094.3104.

Kotlin Flow 转换以及上下游处理

本片文章主要介绍Flow上下游处理,上游一个Flow使用map,上游两个Flow使用zip,上游三个Flow及以上使用combine 1、下面代码展示了upStreamFlow作为上游,downStreamFlow作为下游,通过对upStreamFlow使用map操作符函数将upStreamFlow转换为新的Flow对象,每个元素都通过lambda表达式进行处理,并生成以“Number:”为开头的字符串。packagecom.cqzimportkotlinx.coroutines.flow.*suspendfunmain(){valupStreamFlow:Flow=flow{for(iin1

Lambda 编程(Kotlin)一

学习记录,以下为个人理解知识点:Lambda的定义:允许你把代码块当作参数传递给函数Lambda的语法约定:如果lambda表达式是函数调用的最后一个实参,它可以放到括号的外边当lambda表达式时函数唯一的实参时,还可以去掉调用代码中的空括号对Lambda简介简单来说,就是直接传递代码块作为函数的参数。举例(kotlin):button.setOnClickListener{要执行的代码块}上述内容就是直接将代码块作为函数的参数传递给了setOnClickListener。 是不是一头雾水。那么下面说下具体过程。一般Java这么写:button.setOnClickListener(newV

Kotlin 协程与生命周期感知组件一起使用

一、build.gradle引入//CoroutineScope生命周期感知组件协程implementation'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'implementation'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0'implementation'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0'二、ViewModelScope应用中的每一个ViewModel都定义了ViewModelScope。如果ViewModel已清除,则在此

Kotlin判断null比较let布尔值Boolean

Kotlin判断null比较let布尔值BooleanclassMyData{valcount:Int?=2023valnumber:Int?=null}funmain(args:Array){valdata=MyData()valyear=2022if(data.count!=null){if(data.count>year){println("data.count!=null")}}if(data.count!!>year){println("data.count!!")}varb1=data.count?.let{it>2022}?:falseprintln(b1)varb2=data.

Kotlin全方位-简单解析

Kotlin是一种现代化的静态类型编程语言,由JetBrains公司开发。它可以在Java虚拟机(JVM)上运行,并且可以与Java代码无缝地进行互操作。Kotlin旨在提供更简洁、更安全、更具表达力和更高效的编程语言。Kotlin主要运用Android开发:Kotlin被广泛用于Android应用程序的开发。它可以与Java代码互操作,提供了许多方便的功能和语法糖,使得开发更加简洁和高效。后端开发:Kotlin可以用于构建服务器端应用程序。它可以与Java框架(如Spring)无缝集成,并且提供了一些特性来简化后端开发,如空安全、扩展函数等。前端开发:Kotlin可以通过Kotlin/JS编

Kotlin学习之密封类

Kotlin中的密封类:kotlin中的密封类,用关键词Sealed修饰,且还有一个规定:Sealed类的子类应该是Sealed类的嵌套类,或者应该在与Sealed类相同的文件中声明。当我们想定义一个有相同父类,但是有不同子类的时候,我们可以用枚举,抽象类,密封类来表示。下面一一讲解它们之间的区别。1.枚举enumclassResult(valdata:String){SUCCESS("Success"),ERROR("Error")}但是如果我们ERROR中想定义一个Exception,那么枚举类是不允许的。enumclassResult(valmessage:String){SUCCESS

学习心得05:Kotlin

  有多少种编程语言?不知道。那么中国人贡献了几种?好像一种也没有。这就奇怪了。为什么?  安卓APP的编程语言,本来是JAVA。某年开始鼓励大家使用Kotlin。这几天简单了解了一下:Kotlin编译结果跟JAVA一样。其实解释型语言也有自己独特的优势。很多写法更灵活,更简化。使用了lamba、扩展函数等一系列新语法。  新语言的特性,一开始总是会不适应。等用多了就会发现好处。  凡事有利有弊。是不是说这种语法就没有问题呢?也不对。过于隐藏细节,有时会让人糊涂。工作重点并不在于使用了什么语言,而在于基本功。  当然,如果是刚开始学习安卓编程,建议直接学习kotlin,因为官方要求了。

Kotlin 开发Android app(十八):线程Thread和UI更新

多线程的好处是不言而喻的,它能帮我们刚更多的事情,同时干不同的事情在程序设计中是经常出现的,这种时候我们使用的是线程。在Kotlin中,使用的还是原先java的那一套,用的还是Thread,可能是在java中Thread就挺好用的,Kotlin没有做太多的变化。线程Thread的使用Thread是一个类,有几种用法,比较常规的是声明一个类,继承Thread,重载run()的方法,后建立一个变量,使用start的方法启动线程。innerclassCountThread:Thread(){varpassc:Int=0overridefunrun(){super.run()while(true){T