本文主要是介绍可能我撞了南墙也学不会kotlin协程吧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
哈哈哈哈哈哈哈哈哈哈~
很早就开始学Kotlin了,项目中也渐渐使用,项目从最初的某个方法某个类写起,直到2022年的7月,决定中小型项目尽量全面使用Kotlin开发,直至目前,开发的项目90%都是Kotlin,还是处于Kotlin+Java混搭,笑死~
搞笑的是,每次写协程,写着写着就忘了,然后,打开百度,一边学一边写,所以,为了减少每次搜索的工作,决定在这篇文章总结平常开发使用的代码片段,方便搬砖(复制+粘贴)。
1、快速使用CoroutineScope + launch{}
CoroutineScope(Dispatchers.Main).launch {delay(1000L)//阻塞时间}
2、循环子线程
方法一
private var hd = Handler()private var rb: Runnable = object : Runnable {override fun run() {hd.postDelayed(this, 3000)pool.playByRes(R.raw.closed_barn_door)}}
启用
hd.postDelayed(rb,100)
停用
hd.removeCallbacks(rb)
方法二、在viewmodel中写
fun runForever() {// start a new coroutine in the ViewModelviewModelScope.launch {// cancelled when the ViewModel is clearedwhile(true) {delay(1_000)// do something every second}}
}
3、更新UI
withContext(Dispatchers.Main) {Toast.makeText(this@MainActivity, "发送成功.", Toast.LENGTH_LONG).show()
}或
thread{//编写具体的逻辑 Thread.sleep(1000)
}
获取类名
private val TAG = MainActivity::class.java.name
4、接口回调
getInstance().init(this@MainActivity, object: XXX.XCallback{override fun doCallback(id: String?, name: String?, data: String?) {Log.e(TAG, "doCallback: ")}})
5、常见的 CoroutineScope 协程作用域 :
GlobalScope : 该作用域是 进程级别的 , 与应用进程同级 , 即使 Activity 被销毁 , 协程任务也可以继续执行 ;
MainScope : 该 作用域仅在 Activty 中 , 如果 Activity 被销毁 , 则 在 onDestory 生命周期函数中取消协程任务 ;
viewModelScope : 该作用与仅在 ViewModel 中使用 , 与 ViewModel 生命周期绑定 ;
lifecycleScope : 该作用与仅在 Activity 中使用 , 与 Activity 生命周期绑定 ;
————————————————
Kotlin 官方文档 中文版
这篇关于可能我撞了南墙也学不会kotlin协程吧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!