协程是一种强大的并发编程工具,能够简化异步任务处理,提高程序的效率和性能。协程就像是一个函数执行到一半时,你可以暂停它去做另一件事,然后再回来继续执行它,这种暂停和继续执行的能力可以更灵活的处理并发任务,而不必担心线程活进程带来的复杂性,例如处理网络请求,处理读取文件这种,在等待响应的时候不会阻塞程序其他部分
协程就是一个线程框架只不过是更方便一些得线程框架
为什么挂起函数只能在协程里,或者另一个挂起函数里面被调用?
首先,挂起之后是需要恢复的,也就是把线程给切回来,而恢复这个功能是协程里的,如果一个挂起函数不在协程里面被调用,那么这个恢复的功能就没法实现。
suspend关键字的作用: 函数的创建者对函数调用者的提醒,提醒调用者我是一个耗时函数,我被我的创建者用挂起的方式放在了后台运行,所以需要再协程里调用我
在安卓中使用kotlin协程,挂起函数是通过使用suspend关键字来声明的,当调用一个挂起函数时,它会暂停当前协程的执行,但并不会阻塞线程,实际上协程的状态是会被保存下来,以便于稍后可以恢复执行,挂起函数通常用于执行可能耗时的操作,比如网络请求,数据库查询等等。
挂起的原因是喂了避免阻塞线程,再安卓开发中,主线程通常用于处理用户交互和UI更新,如果在主线程执行长时间的耗时操作,会导致UI卡顿,影响用户体验,使用协程的挂起函数可以将耗时操作转移到后台线程执行,而不会阻塞线程,保持UI的流畅性。
需要再协程中调用挂起函数的原因是,协程是一种轻量级的线程管理机制,用于简化并发编程,再协程中,可以使用挂起函数,来执行异步操作,而不必依赖于回调函数或者繁琐的线程管理代码,通过在协程中调用挂起函数,可以使程序更加简洁可读并且更容易处理异步操作。
怎么自定义suspend函数?
1、什么时候自定义?
如果你得某个函数比较耗时,那么就把它写成挂起函数。或者是本身这件事并不耗时,但是我们需要等待也可以写挂起函数。
2、怎么写
给函数加上suspend关键字,然后用withContext()把函数体内容包裹住就好了。