我了解了 Kotlin 协程的原理,但是对于 Kotlin 协程、Android Async.execute() 和 Async await 之间有些混淆。Kotlin 协程在后台运行且不会阻塞 UI 线程,但是当我们使用 Android AsyncTask(重写了方法 doInBackground, onPostExecute 和 onProgressUpdate)时也会在后台线程上执行计算并将结果发布到 UI 线程。
Async-await 返回一个 Deffered 对象,这意味着结果显然会在未来返回。
有人可以解释一下它们之间的区别吗?
AsyncTask
默认在SingleThreadPoolExecuter
中运行,因此默认情况下无法并行运行多个AsyncTask
。除此之外,如果没有正确处理,AsyncTask
通常会留下内存泄漏问题。简而言之,Kotlin 协程是一种优雅的异步调用方式,不需要任何回调接口,与RXjava
非常相似。 - ADMawait()
,那么线程将等待任务完成后执行下一行代码,这与普通同步代码的行为相同。 - JackAsyncTask
。它们只是有不同的实现方式。 - coroutineDispatcher