Kotlin协程
协程是什么
协程让异步逻辑同步化,杜绝回调地狱。协程最核心的点就是,函数或者一段程序能够被挂起,稍后再在挂起的位置恢复。kotlin中的协程基于线程,它是轻量级线程。
挂起与恢复
协程新增了suspend和resume:
- suspend:也称为挂起或暂停,用于暂停执行当前协程,并保存所有局部变量;
- resume:用于让已暂停的协程从其暂停处继续执行。
使用suspend关键字修饰的函数叫作挂起函数。挂起函数只能在协程体内或其他挂起函数内调用。
协程让异步逻辑同步化,杜绝回调地狱。协程最核心的点就是,函数或者一段程序能够被挂起,稍后再在挂起的位置恢复。kotlin中的协程基于线程,它是轻量级线程。
协程新增了suspend和resume:
使用suspend关键字修饰的函数叫作挂起函数。挂起函数只能在协程体内或其他挂起函数内调用。
在kotlin中,用==
检查两个字符串中的字符是否匹配,用===
检查两个变量是否指向内存堆上同一对象。
fun main() {
val str1 = "Jason"
val str2 = "Jason"
println(str1 === str2) //输出true,因为字符串常量池
val str2 = "jason".capitalize()
println(str1 === str2) //输出false,因为capitalize方法创建了一个新的"Jason"
val str2 = "jason".capitalize().intern()
println(str1 === str2) //输出true,因为intern方法将capitalize方法创建的字符串放进了字符串常量池,并返回了字符串常量池中该字符串的引用
}
解构声明的后台实现就是声明component1、component2等若干个组件函数,让每个函数负责管理你想返回的一个属性数据,如果你定义一个数据类,它会自动为所有定义在主构造函数的属性添加对应的组件函数。
const val str = "aa,bb,cc"
fun main() {
val (a,b,c) = names.split(",") //输出aa bb cc
val (a) = names.split(",") //输出aa
val data = names.split(",") //输出[aa,bb,cc]
}
fun test(vararg str: String) {
println(str.size) //输出2
}
fun main() {
test("1", "2")
}
保持统一的办法:为Button添加一下属性android:textAppearance="@android:style/Widget.TextView"
...
符号展示使用lines=1
实现:
android:lines="1"
android:ellipsize="end"
使用singleLine=true
实现:
android:singleLine="true"
android:ellipsize="end"
依赖库:implementation 'com.google.android.material:material:1.4.0'
使用28及以上的SDK,在布局中为TabLayout添加属性app:tabIndicatorFullWidth="false"
好久没有写文章了,然后回顾了之前的文章,发现自己竟然从未总结过Android开发过程中的点点滴滴,于是就最近遇到的Java和Android的基础问题进行总结。