Coroutine
tigershin
这个作者很懒,什么都没留下…
展开
-
kotlin coroutine文档:协程上下文和调度器
Coroutine context and dispatchersCoroutines always execute in some context which is represented by the value of CoroutineContext type, defined in the Kotlin standard library.The coroutine context is...翻译 2019-01-18 11:01:02 · 1940 阅读 · 4 评论 -
kotlin coroutine文档:取消和超时
取消和超时这部分讲述协程的取消和超时取消协程的执行在一个长期运行的应用,你可能需要细粒度地控制后台协程。例如,一个用户可能关闭页面,这个页面启动了一个协程,它的结果现在不再需要了,它的运行应该要取消。launch函数返回一个Job,它可以用来取消运行的协程:import kotlinx.coroutines.*fun main() = runBlocking {//例子开始 ...翻译 2019-01-13 12:09:24 · 1828 阅读 · 0 评论 -
kotlin coroutine文档:基础
协程基础这部分讲述协程基础概念。第一个协程运行如下代码:import kotlinx.coroutines.*fun main() { GlobalScope.launch { // 在后台启动新协程,然后继续运行 delay(1000L) // 非阻塞式延时1秒(默认时间单位是毫秒) println("World!") // 在延时后打印 ...翻译 2019-01-12 23:27:42 · 179 阅读 · 0 评论 -
kotlin coroutine文档:组合挂起函数
组合挂起函数这部分讲述组合挂起函数的不同方法默认是顺序的假设我们有两个在别处定义的挂起函数,它们做一些有用的东西,像某种服务请求或者计算。我们假设它们仅仅是有用的,但是为了说明这个例子,每个实际上仅仅延迟一秒:suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 假设我们在这里做一些有用的事情 return 13...翻译 2019-01-13 20:03:04 · 467 阅读 · 0 评论 -
kotlin coroutine文档:通道
通道延迟值提供了在协同程序之间传输单个值的便捷方法。 通道提供了一种传输值流的方法。通道是kotlinx.coroutines的实验性的功能。 他们的API预计将在接下里的kotlinx.coroutines库更新中变化,并且可能会发生重大变化。通道基础Channel在概念上与BlockingQueue非常相似。 一个关键的区别是,它不是阻塞式的put操作,而是具有挂起的send,而不是阻...翻译 2019-01-26 20:37:32 · 640 阅读 · 0 评论 -
kotlin coroutine文档:共享可变状态和并发
共享可变状态和并发可以使用Dispatchers.Default等多线程调度程序并行执行协程。 它产生了所有常见的并发问题。 主要问题是同步访问共享可变状态。 在协程域中解决这个问题的一些解决方案类似于多线程世界中的解决方案,但其他解决方案却是独一无二的。问题让我们开启一百个协程,它们都做了一千次相同的动作。 我们还将测量完成时间以进行进一步比较:suspend fun Coroutine...翻译 2019-01-26 23:03:21 · 805 阅读 · 0 评论 -
Kotlin协程高级技巧和诀窍
Kotlin协程出奇地简单:仅仅让一些长期运行的操作放在launch里面,然后就好了,是这样的把?对于简单的情况,当然如此了。但是很快,并发和并行固有的复杂性开始积累。当你深入协程战壕时,下面内容是你需要知道的。取消 + 阻塞式的工作 =翻译 2019-01-29 21:22:36 · 4563 阅读 · 2 评论 -
如何使用协程Flow定义链式调用DSL
定义DSL定义启动flow的函数: protected val _spinner: MutableLiveData<Boolean> by lazy { MutableLiveData<Boolean>() } val spinner: LiveData<Boolean> get() = _spinner ...原创 2019-07-25 16:59:15 · 875 阅读 · 0 评论