Threading and Loaders. (Android Performance Patterns Season 5, Ep. 8)

Android 性能模式第五季的第八集,之前因為沒有使用過 Loader 所以暫時跳過购披,住院的這些日子杖挣,接觸了 Loader,發(fā)現(xiàn)它真的很好用刚陡,接下來惩妇,進(jìn)入視頻翻譯,地址如下:

https://www.youtube.com/watch?v=s4eAtMHU5gI&t=22s

當(dāng) Activity 不在活躍筐乳,我們應(yīng)當(dāng)如何處理正在進(jìn)行的線程工作呢歌殃?

加載器可以解決這個問題。

目前為止蝙云,你可以看 App 中的 Activity 都可以被隨時創(chuàng)建以及銷毀氓皱,無論是響應(yīng)用戶操作還是因為 Android 需要資源。

這就為線程工作提出了一個問題勃刨,因為它的工作可能超出了 Activity 的生命周期波材。

線程工作超過了 Activity 生命周期.png

當(dāng)你的 Activity 被銷毀,但你的線程還依然在運行并持有一些 View 的引用身隐,等待任務(wù)結(jié)束后對他們做些更新各聘。

如果 Activity 在線程任務(wù)之前結(jié)束可能會發(fā)生一些問題。

首先抡医,因為它還強引用著 View,Activity 對象將被保留在內(nèi)存中早敬,直到線程任務(wù)終于完成忌傻。

這就是內(nèi)存泄漏(內(nèi)存泄漏指的是由于某些原因未能釋放已經(jīng)不再使用的內(nèi)存),而這可能導(dǎo)致 App 內(nèi)容不足搞监,最終導(dǎo)致崩潰水孩。

其次,任務(wù)完成之后更新這些 View 是浪費的琐驴,因為他們已經(jīng)不再可見俘种。

最后,你可能需要重復(fù)這個任務(wù)才能使得 VIew 更新绝淡。

你應(yīng)該讓線程工作正確響應(yīng) Activity 的生命周期宙刘,從而避免這些問題。

這時候你應(yīng)該使用 Loader牢酵。

Loader 是一種對于 Activity 生命周期的內(nèi)部明智的用法(這個翻譯的好差...)悬包,你可以確保每次工作都在正確的地方結(jié)束。

在正確的地方結(jié)束.png

所以 Loader 可以有效的防止內(nèi)存泄漏馍乙,可以正確的更新視圖布近,沒有不必要的重復(fù)垫释。

讓我們來看看它如何工作,你可以在 Activity 中創(chuàng)建一個 LoaderManager 實例撑瞧,來替代 AsyncTask 或者其他線程上的任務(wù)棵譬。

將工作發(fā)送到 LoaderManager 并且它將確保當(dāng) Activity 配置改變時你的任務(wù)依然處理得當(dāng)。

任務(wù)開始.png
任務(wù)結(jié)束.png

LoaderManager 也會將任務(wù)結(jié)果緩存起來预伺,所以不必重復(fù)订咸。

現(xiàn)在如果一個帶有正在運行加載器的 Activity 正在被彈出棧,且不會再進(jìn)入任務(wù)棧中扭屁,那么這個正在運行的任務(wù)會發(fā)生什么呢算谈?

這種情況下 LoaderManager 會在你的代碼中進(jìn)行回調(diào),告訴你這個結(jié)果永遠(yuǎn)不會被使用料滥。

你可以使用這個回調(diào)終止這個任務(wù)然眼,清理和繼續(xù)其他任務(wù)進(jìn)而不在浪費任何資源。

值得注意的是葵腹, Loader 是針對 Activity 的高每,因此,它為你提供了一個堅實的框架践宴,用于將視圖與工作線程分開鲸匿,并最大限度的減少在 Activity 生命周期中的重復(fù)工作。

Loader 的缺點是要使用相當(dāng)多的額外代碼阻肩,從而將其正確的集成到你的 App 中带欢。

大量代碼.png

這就是本次視頻內(nèi)容,翻譯水平還有待提升(主要是翻譯成人話)烤惊,我會繼續(xù)努力的乔煞!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柒室,隨后出現(xiàn)的幾起案子渡贾,更是在濱河造成了極大的恐慌,老刑警劉巖雄右,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件空骚,死亡現(xiàn)場離奇詭異,居然都是意外死亡擂仍,警方通過查閱死者的電腦和手機囤屹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來防楷,“玉大人牺丙,你說我怎么就攤上這事。” “怎么了冲簿?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵粟判,是天一觀的道長。 經(jīng)常有香客問我峦剔,道長档礁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任吝沫,我火速辦了婚禮呻澜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惨险。我一直安慰自己羹幸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布辫愉。 她就那樣靜靜地躺著栅受,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恭朗。 梳的紋絲不亂的頭發(fā)上屏镊,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音痰腮,去河邊找鬼而芥。 笑死,一個胖子當(dāng)著我的面吹牛膀值,可吹牛的內(nèi)容都是我干的棍丐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沧踏,長吁一口氣:“原來是場噩夢啊……” “哼骄酗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悦冀,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睛琳,沒想到半個月后盒蟆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡师骗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年历等,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辟癌。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寒屯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寡夹,我是刑警寧澤处面,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站菩掏,受9級特大地震影響魂角,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜智绸,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一野揪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瞧栗,春花似錦斯稳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至系草,卻和暖如春通熄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背找都。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工唇辨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人能耻。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓赏枚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晓猛。 傳聞我的和親對象是個殘疾皇子饿幅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評論 25 707
  • 記不得這是上大學(xué)以來第幾個看起來有些莫名其妙的因為一些壓力而獨自流淚的夜晚洪燥。耳機里放著堯十三的《北方女王》磕秤,一個作...
    南方的南方閱讀 256評論 0 1
  • 成功的人都是相似的,他們懂得克制捧韵,擅于利用時間市咆,不把有限的時間用在無謂的事上。他們對自己有時間上的管理再来,說到這里蒙兰,...
    卓越小深閱讀 44評論 0 0