Kotlin 学习总结

一: 协程
1. 在安卓中,协程很好的解决了两个问题:
耗时任务,运行时间过长阻塞主线程
主线程安全,允许你在主线程中调用任意 suspend(挂起) 函数

  1. 除了 invoke(or call) 和 return ,它额外添加了 suspend(挂起) 和 resume(恢复)。

  2. 在 Android 中,我们使用结构化并发可以做三件事:
    取消不再需要的任务
    追踪所有正在进行的任务
    协程失败时的错误信号

  3. 启动协程有两种方法,且有不同的用法:
    使用 launch 协程构建器启动一个新的协程,这个协程是没返回值的
    使用 async 协程构建器启动一个新的协程,它允许你返回一个结果,通过挂起函数 await 来获取。

  4. coroutineScope 和 supervisorScope。它们之间最大的不同就是,当其中任意一个子协程失败时,coroutineScope 会取消。所以,如果一个网络请求失败了,其他的所有请求都会立刻被取消。如果你想继续执行其他请求的话,你可以使用 supervisorScope,当一个子协程失败时,它不会取消其他的子协程。

  5. 一次性请求 : 调用一次执行一次,它们总是在结果准备好之后才结束执行。
    流式请求 : 观察变化并反馈给调用者,它们直到第一个结果返回才会结束执行。、

二: Kotlin和Java的部分区别
<meta charset="utf-8">

Kotlin关键字与操作符 :

https://blog.csdn.net/xfhy_/article/details/79153251

UU的代码:

https://github.com/sanhuai001/AndroidSDK-master

1. 三元表达式

java:

a > b ? a : b

kotlin:

if(a >b) a else b

2. Fragment里面获取控件的id

java:

直接findViewById() 或者 ButterKnif(注解)初始化

Kotlin:

viewType?.tv_title?.text = resources.getString("课程")

3. ?.let

[图片上传失败...(image-f03b02-1596013235256)]

let : it 判空,返回值为函数块的最后一行或指定return表达式

with: 无it 不判空, 返回的是最后一行或指定return表达式

run : 无it 判空, 返回的是最后一行

apply: 返回的是对象本身

also:返回的则是传入对象的本身

[图片上传失败...(image-b23100-1596013235256)]

4. Operator call corresponds to a dot-qualified call ‘adapter?.getItemCount().compareTo(0)’ which is not allowed on a nullable receiver ‘adapter?.getItemCount()’

使用 A ?: B 表达式,?: 表示的意思是,当对象 A 值为 null 的时候,那么它就会返回后面的对象 B。

[图片上传失败...(image-e2f6fc-1596013235256)]

5. Kotlin比Java代码少,少在哪里?

6. !! 尽量不用、少用该操作符 (同4)

报错:

[图片上传失败...(image-47aadd-1596013235256)]

解决办法(同7):

[图片上传失败...(image-5eb099-1596013235256)]

7. Elvis 运算符 ?:

[图片上传失败...(image-5da080-1596013235256)]

如果是整形:

var pos = 10

if(pos?.toInt() ?: 0) {

}

8. EditText 赋值方法

editText.text=“文本内容”,会报错

解决方法如下:

一:editText.setText(“文本内容”)

二: editText.text=Editable.Factory.getInstance().newEditable("文本内容")

9. List<String> 无法直接clear()

定义:MutableList <String> 而不是List<String>, MutableList 是有get和set的,故可以clear()

10. 点击事件??--如何减少代码行数 ?

11. 一个类里面有多个layout, 里面有重名的id,报错: Overload resolution ambiguity. All these functions match

12. 使用List的方法

get:带operator修饰的方法,因此可用"[]"运算符访问集合元素。

indexOf:返回集合元素在List中的索引。

lastIndexOf:返回集合元素在List中最后一次的出现位置。

subList:返回List集合的子集合。

//创建不可变集合,返回值是List var list1 = listOf("Java", "Kotlin", null, "Go") for (i in list1.indices) { println(list1[i]) } //获取指定元素的出现位置 println(list1.indexOf("Kotlin")) //获取List的子集合 println(list1.subList(1, 3))

输出结果:

Java Kotlin null Go 1 [Kotlin, null]

13. const

const : 将属性标记为编译期常量

[图片上传失败...(image-3389b1-1596013235256)]

14. Kotlin

Thread Handler

15. 协程Coroutine 挂起 : 读写文件或者网络请求

尽管协程本身是轻量级的,但是协程做的工作一般比较重,比如读写文件或者网络请求

在一个线程上可以同时跑多个协程,同一时间只有一个协程被执行,在单线程上模拟多线程并发,协程何时运行,何时暂停,都是有程序员自己决定的

runBlocking所在协程被挂起后会阻塞所在线程,线程不能处理协程之外的事情;coroutineScope所在的协程被挂起后,则会立即交出控制权给所在的线程,不会阻塞线程,线程可以处理协程之外的事情

suspend关键字,这个关键字翻译过来就是“挂起”的意思,suspend关键字修饰的函数也就叫“挂起函数”

挂起函数必须在协程或者其他挂起函数中被调用,换句话说就是挂起函数必须直接或者间接地在协程中执行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354