ARTS打卡 - 15
1. Algorithm
补一下上上周的打卡。。。
2. Review
Kotlin Coroutines in Android: Understanding suspend functions and main-safety by example
- 一个函数,加了suspend,一定是运行在后台线程的吗?
如果没有特殊说明,那么suspend函数将会运行在主线程而不是后台线程。
一个suspend函数将会被协程调用
如果需要执行很长的任务,它将会在调用线程挂起, 而调用线程继续执行
当suspend协程挂起时,其余在调用线程上的函数依然可以运行
当suspend 阻塞函数的结果返回后,该协程继续运行。
自从ViewModelScope将Dispatcher.Main作为dispatcher之后,viewModelScope.launch自动运行在主线程。
需要选择正确的dispatcher来决定suspend 函数是否会阻塞主线程,IO密集型选择Dispatcher.IO, CPU密集型选择Dispatcher.Default
3. Tip
很久没有遇到过依赖冲突的问题了,基本上不引入新库就不会遇到,这次遇到了一个依赖冲突的问题,刚好重新徐学习下:可以运行: ./gradlew -q :app:appDependencies [--configuration] [implementation]
查看依赖树,一般会提示哪个module下的哪个依赖冲突,这时可以先注释掉其中一个,然后查看剩下的依赖是在哪里,最后使用exclude去除这个依赖:
1 | implementation (project(':tutor-storage'),{ |