最后又一些不對(duì)。
1. CoroutineExceptionHandler只能捕獲launch中的異常。
這個(gè)是全局異常捕獲,if用async啟動(dòng)的,await()處沒有try catch,CoroutineExceptionHandler會(huì)收到。
2. launch產(chǎn)生的異常會(huì)立即傳遞給父級(jí) ,這個(gè)不一定。比如:
@Test
fun `test_CoroutineExceptionHandler_01`() = runBlocking<Unit> {
val exceptionHandler =
CoroutineExceptionHandler { context, throwable ->
Log.e(
TAG,
"parent throwable:$throwable"
)
}
val scope = CoroutineScope(Job())
scope.launch(exceptionHandler) {
Log.e(TAG, "parent execute start")
val childExHandler =
CoroutineExceptionHandler { context, throwable ->
Log.e(
TAG,
"child throwable:$throwable"
)
}
//子協(xié)程中如果使用SupervisorJob()、Job(),則異常不會(huì)往上傳播;否則異常會(huì)在頂層協(xié)程中處理
val childJob = launch(Job()+childExHandler) {
// val childJob = launch(childExHandler) {
delay(1000)
Log.e(TAG, "child execute")
throw IllegalArgumentException("error occur")
}
childJob.join()
Log.e(TAG, "parent execute end")
}
Thread.sleep(2000)
}
Kotlin協(xié)程的理解關(guān)于Kotlin協(xié)程的文章特別多,多數(shù)是按照官方教程翻譯一遍,很多概念理解起來比較困惑,特別是協(xié)程的異常處理部分,看的是一頭霧水。所以打算跟著官方文檔及優(yōu)秀的Kotlin協(xié)程...
最近看到一個(gè)新聞,一個(gè) 1: 1 的自由高達(dá)落戶在上海金橋。 作為高達(dá)愛好者的我一直想去現(xiàn)場(chǎng)感受一下高達(dá)真實(shí)的壓迫感,無奈一直沒機(jī)會(huì)去上海。不過這難不倒我,借助 AR 技術(shù)自...
FBO Frame Buffer object 為什么要用FBO 我們需要對(duì)紋理進(jìn)行多次渲染采樣時(shí),而這些渲染采樣是不需要展示給用戶看的,所以我們就可以用一個(gè)單獨(dú)的緩沖對(duì)象(...
原文地址 Android MediaCodec stuff 這篇文章是關(guān)于 MediaCodec 這一系列類,它主要是用來編碼和解碼音視頻數(shù)據(jù)。并且包含了一些源碼示例的集合以...
前言 當(dāng)前眾多的視頻SDK中, 大都是封裝ffmpeg對(duì)視頻進(jìn)行轉(zhuǎn)碼, 壓縮, 裁剪的處理.優(yōu)點(diǎn)是ffmpeg發(fā)展到現(xiàn)在已經(jīng)相對(duì)成熟, 支持的視頻格式較多.但是缺點(diǎn)也是顯而易...
【聲 明】 首先,這一系列文章均基于自己的理解和實(shí)踐,可能有不對(duì)的地方,歡迎大家指正。其次,這是一個(gè)入門系列,涉及的知識(shí)也僅限于夠用,深入的知識(shí)網(wǎng)上也有許許多多的博文供大家學(xué)...
最近在做Android opengl相關(guān)的項(xiàng)目, 碰到一個(gè)問題, 如何根據(jù)用戶的手勢(shì)判斷是否點(diǎn)擊了某個(gè)3d 物體,如果是原生應(yīng)用, 這個(gè)根本就不是問題, 因?yàn)锳ndroid ...
@風(fēng)起于山巔 更,最近工作有點(diǎn)忙
Android音視頻【十三】OpenSL ES介紹&基于OpenSL ES實(shí)現(xiàn)音頻采集人間觀察勿再別人的心中修行自己,勿再自己的心中強(qiáng)求別人。 前言 最近寫文章有點(diǎn)偷懶了,離上次寫文章大概一個(gè)月了。 一般Android音頻的采集在java層使用AudioRec...