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

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.
主站蜘蛛池模板: 廊坊市| 石嘴山市| 花垣县| 怀宁县| 上犹县| 自治县| 威远县| 成安县| 黔西| 普定县| 江门市| 含山县| 舒城县| 青河县| 迭部县| 利川市| 右玉县| 留坝县| 金堂县| 福清市| 同心县| 深水埗区| 苍梧县| 井陉县| 襄樊市| 晋中市| 孟州市| 车致| 祁门县| 南丰县| 四川省| 夏河县| 抚宁县| 临漳县| 偏关县| 正镶白旗| 哈巴河县| 庄河市| 永安市| 伊金霍洛旗| 枣庄市|