官术网_书友最值得收藏!

CoroutineDispatcher

It's important to understand that in Kotlin, while you can create threads and thread pools easily, you don't access or control them directly. What you do is create a CoroutineDispatcher, which is basically an orchestrator that distributes coroutines among threads based on availability, load, and configuration.

In our current case, for example, we will create a CoroutineDispatcher that has only one thread, so all the coroutines that we attach to it will be running in that specific thread. To do so, we create a ThreadPoolDispatcher – which extends CoroutineDispatcher – with only one thread.

Let's open the MainActivity.kt file that was generated previously – it's in the main package of the app, co.starcarr.rssreader – and update it so that it creates such a dispatcher on the class level:

class MainActivity : AppCompatActivity() {
val netDispatcher = newSingleThreadContext(name = "ServiceCall")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
In this and many other cases throughout the book, modifiers such as private, protected, open, and others may not be written in the examples as a way to reduce the code – thus improving the formatting for the book. Please take into account that the best practice is to always make each member as inaccessible as possible. Also, in many cases the correct modifier will be found in the code files that come with the book, since there's no formatting constraint there.
主站蜘蛛池模板: 黎城县| 南阳市| 陆良县| 南康市| 孟连| 崇仁县| 武宣县| 合江县| 瑞丽市| 化隆| 保定市| 宜阳县| 宜章县| 新兴县| 毕节市| 陇南市| 应用必备| 芮城县| 宿州市| 寻乌县| 长岭县| 德惠市| 巩留县| 遂川县| 遂川县| 若羌县| 扶绥县| 无棣县| 奈曼旗| 六盘水市| 武隆县| 原平市| 千阳县| 商河县| 斗六市| 津市市| 买车| 蒲城县| 邢台市| 许昌市| 建阳市|