Kotlin涓嶬otlinX Coroutines鐨勫崗绋嬭皟搴﹀櫒鎬庝箞浣跨敤
鍦↘otlin涓紝KotlinX Coroutines搴撲负鍗忕▼鎻愪緵浜嗕竴浜涘唴缃殑鍗忕▼璋冨害鍣紝浠ヤ究鍦ㄤ笉鍚岀殑绾跨▼鎴栨墽琛岀幆澧冧腑杩愯鍗忕▼銆備互涓嬫槸浣跨敤鍗忕▼璋冨害鍣ㄧ殑涓€浜涘父瑙佹柟娉曪細
- 浣跨敤Dispatchers绫荤殑闈欐€佹柟娉曡幏鍙栭瀹氫箟鐨勮皟搴﹀櫒銆備緥濡傦紝鍙互浣跨敤Dispatchers.Default鏉ュ湪鍚庡彴绾跨▼涓繍琛屽崗绋嬶細
GlobalScope.launch(Dispatchers.Default) {
// 鍦ㄥ悗鍙扮嚎绋嬩腑鎵ц鍗忕▼閫昏緫
}
- 浣跨敤withContext鍑芥暟鍦ㄥ崗绋嬩腑鍒囨崲璋冨害鍣ㄣ€倃ithContext鍑芥暟鍙互鎺ュ彈涓€涓皟搴﹀櫒浣滀负鍙傛暟锛岀敤浜庡湪鍗忕▼涓复鏃跺垏鎹㈠埌鎸囧畾鐨勮皟搴﹀櫒銆備緥濡傦紝鍙互鍦ㄥ崗绋嬩腑浣跨敤withContext(Dispatchers.IO)鏉ュ湪IO绾跨▼涓墽琛屾煇浜涙搷浣滐細
suspend fun doSomethingOnIoThread() {
withContext(Dispatchers.IO) {
// 鍦↖O绾跨▼涓墽琛屾搷浣?/span>
}
}
- 鍒涘缓鑷畾涔夌殑璋冨害鍣ㄣ€傞櫎浜嗛瀹氫箟鐨勮皟搴﹀櫒澶栵紝杩樺彲浠ュ垱寤鸿嚜瀹氫箟鐨勮皟搴﹀櫒銆傚彲浠ヤ娇鐢–oroutineDispatcher绫荤殑瀛愮被鏉ュ疄鐜拌嚜瀹氫箟鐨勮皟搴﹀櫒锛屽苟灏嗗叾浼犻€掔粰launch鎴杦ithContext鍑芥暟鏉ユ寚瀹氬崗绋嬭繍琛岀殑绾跨▼鎴栨墽琛岀幆澧冦€?/li>
val customDispatcher = Executors.newSingleThreadExecutor().asCoroutineDispatcher()
GlobalScope.launch(customDispatcher) {
// 鍦ㄨ嚜瀹氫箟璋冨害鍣ㄤ腑鎵ц鍗忕▼閫昏緫
}
闇€瑕佹敞鎰忕殑鏄紝鍦ㄥ疄闄呭紑鍙戜腑锛屽簲璇ユ牴鎹疄闄呮儏鍐甸€夋嫨鍚堥€傜殑璋冨害鍣ㄦ潵淇濊瘉鍗忕▼鐨勯珮鏁堣繍琛屻€備笉鍚岀殑璋冨害鍣ㄩ€傜敤浜庝笉鍚岀殑鍦烘櫙锛屼緥濡侱ispatchers.Main閫傜敤浜嶢ndroid搴旂敤鐨勪富绾跨▼锛孌ispatchers.IO閫傜敤浜庢墽琛孖O瀵嗛泦鍨嬫搷浣滅瓑銆?/p>
甯屾湜杩欎簺鏂规硶鍙互甯姪鎮ㄦ洿濂藉湴鐞嗚В鍜屼娇鐢↘otlinX Coroutines鐨勫崗绋嬭皟搴﹀櫒銆?/p>
相关问答