什么是線(xiàn)程安全問(wèn)題 線(xiàn)程安全問(wèn)題不是說(shuō)線(xiàn)程不安全,而是多個(gè)線(xiàn)程之間交錯(cuò)操作有可能導(dǎo)致數(shù)據(jù)異常。就比如兩個(gè)線(xiàn)程同時(shí)對(duì)一個(gè)數(shù)據(jù)進(jìn)行操作,不能保證最后得到是數(shù)據(jù)是正確的,這就出現(xiàn)了...
什么是線(xiàn)程安全問(wèn)題 線(xiàn)程安全問(wèn)題不是說(shuō)線(xiàn)程不安全,而是多個(gè)線(xiàn)程之間交錯(cuò)操作有可能導(dǎo)致數(shù)據(jù)異常。就比如兩個(gè)線(xiàn)程同時(shí)對(duì)一個(gè)數(shù)據(jù)進(jìn)行操作,不能保證最后得到是數(shù)據(jù)是正確的,這就出現(xiàn)了...
前言 上篇文章講了線(xiàn)程安全問(wèn)題[http://m.itdecent.cn/p/669ee2aec526],要保證原子性,可見(jiàn)性和有序性的操作才能保證線(xiàn)程安全。也講到了s...
Android DeadSystemException 出現(xiàn)情況是被系統(tǒng)殺掉服務(wù)導(dǎo)致出現(xiàn)的原因,一般出現(xiàn)在后臺(tái)用戶(hù)無(wú)感知。 1.出錯(cuò)堆棧: 2.源碼分析 3.解決思路 是否拋...
withContext 是 Kotlin 中一個(gè)非常有用的掛起函數(shù),用于在協(xié)程中切換上下文。通常,我們使用協(xié)程來(lái)執(zhí)行異步任務(wù),例如網(wǎng)絡(luò)請(qǐng)求或數(shù)據(jù)庫(kù)查詢(xún),但是在執(zhí)行異步任務(wù)時(shí),...
Job是協(xié)程的默認(rèn)context 子協(xié)程不會(huì)繼承父協(xié)程的context,會(huì)使用默認(rèn)值 協(xié)程的上下文為SupervisorJob時(shí),該協(xié)程中的異常不會(huì)向外傳播,因此不會(huì)影響其父...
本篇文章舉例協(xié)程的各種方法的使用,并簡(jiǎn)單闡述各個(gè)方法的一些注意事項(xiàng)。 協(xié)程作用域的創(chuàng)建 1.通過(guò)工廠(chǎng)函數(shù)創(chuàng)建自定義上下文的作用域 2.通過(guò)工廠(chǎng)函數(shù)MainScope()創(chuàng)建主...
在上一篇從源碼角度分析,為什么會(huì)發(fā)生Fragment重疊?里,我們分析了造成Fragment重疊的原因,這一篇我會(huì)介紹幾個(gè)解決方案,同時(shí)給出一個(gè)我的方案:9行代碼讓你app內(nèi)...
概要了解,先要明確這幾個(gè)功能具體是做什么的,是為了解決什么問(wèn)題 1.組件化 組件化首先要做的事是將app按功能模塊進(jìn)行拆分,降低各個(gè)模塊間的耦合,并且可以將每個(gè)模塊單獨(dú)編譯運(yùn)...
一、為什么需要 WebSocket 初次接觸 WebSocket 的人,都會(huì)問(wèn)同樣的問(wèn)題:我們已經(jīng)有了 HTTP 協(xié)議,為什么還需要另一個(gè)協(xié)議?它能帶來(lái)什么好處? 答案很簡(jiǎn)單...