日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

抖音字體大小設(shè)置方法安卓 抖音字體大小設(shè)置方法( 四 )


配置任務(wù):對于配置任務(wù)我們最終目標(biāo)是把它們從啟動階段去除掉,這樣做主要有兩個原因,首先部分配置任務(wù)仍然存在一定的耗時,將它們從啟動任務(wù)移除掉可以提升我們的啟動速度;其次配置任務(wù)在沒有執(zhí)行前相關(guān) sdk 無法正常使用,這會對我們的功能可用性、穩(wěn)定性以及優(yōu)化過程中的調(diào)度造成影響 。為了達到去除配置任務(wù)的目的,我們對配置任務(wù)進行了原子化的改造,將原本需要主動調(diào)用向 sdk 中注入 context、callback 等各類參數(shù)的實現(xiàn),通過 spi(服務(wù)發(fā)現(xiàn))的方式改為了按需調(diào)用的方式——對于抖音自己的代碼我們在需要使用 context、callback 等參數(shù)時通過 spi 的方式去請求應(yīng)用上層進行獲取,對于我們無法修改代碼的三方 sdk,我們則對它們進行一個中間層封裝,后續(xù)對于三方 sdk 的使用都通過封裝的中間層,在中間層相關(guān)接口被調(diào)用時再執(zhí)行 sdk 的配置任務(wù) 。通過這樣的方式我們可以把配置任務(wù)從啟動階段移除掉,實現(xiàn)使用時再按需執(zhí)行 。預(yù)加載任務(wù):對于預(yù)加載任務(wù),我們則對它們進行了規(guī)范化改造,以確保預(yù)加載任務(wù)在被降級情況下功能的正確性,同時對過期的預(yù)加載任務(wù)以及預(yù)加載任務(wù)中冗余的邏輯進行去除,以提升預(yù)加載任務(wù)的價值 。功能任務(wù):對于功能性的啟動任務(wù),我們則是對它們進行了粒度拆解與瘦身,去除啟動階段非必須的邏輯,同時對功能任務(wù)添加了調(diào)度與降級能力支持,以供后續(xù)的調(diào)度與降級 。
任務(wù)調(diào)度
關(guān)于任務(wù)調(diào)度業(yè)界有過比較多的介紹,這里對于任務(wù)的依賴分析、任務(wù)排布等不再進行介紹,主要介紹抖音在實踐過程中一些可能的創(chuàng)新點:
基于落地頁進行調(diào)度:抖音啟動除了進入首頁,還有授權(quán)登錄、push 拉活等不同的落地頁,這些不同的落地頁在任務(wù)的執(zhí)行上是有比較大差異的,我們可以在 Application 階段通過反射主線程消息隊列中的消息獲取待啟動的目標(biāo)頁面,基于落地頁進行針對性的任務(wù)調(diào)度;基于設(shè)備性能調(diào)度:采集設(shè)備的各類性能數(shù)據(jù)在后臺對設(shè)備進行打分與歸一化處理,將歸一化之后的結(jié)果下發(fā)到端上,端上根據(jù)所在的性能等級進行任務(wù)的調(diào)度;基于功能活躍度調(diào)度:統(tǒng)計用戶對各個功能的使用情況,為用戶計算出每個功能的一個活躍度數(shù)據(jù),并將他們下發(fā)到端上,端上根據(jù)功能活躍度高低來進行調(diào)度;基于端智能的調(diào)度:在端上通過端智能的方式預(yù)測用戶的后續(xù)行為,為后續(xù)功能進行預(yù)熱等;啟動功能降級:對于部分性能較差的設(shè)備與用戶,對啟動階段的任務(wù)、功能進行降級,將其延后到啟動之后再去執(zhí)行,甚至完全不執(zhí)行,以保證整體體驗 。1.4 Activity 階段優(yōu)化
之前的幾個階段都屬于 Application 階段,接下來看一下 Activity 階段的相關(guān)優(yōu)化,這個階段我們將介紹 Splash 與 Main 合并、反序列化優(yōu)化兩個典型例子 。

抖音字體大小設(shè)置方法安卓 抖音字體大小設(shè)置方法


1.4.1 Splash 與 Main 合并
首先來看一下 SplashActivity 與 MainActivity 的合并,在之前的版本中抖音的 launcher activity 是 SplashActivity,它主要承載著廣告、活動等開屏相關(guān)邏輯 。一般情況下我們的啟動流程為:
進入 SplashActivity,在 SplashActivity 中判斷當(dāng)前是否有待展示的開屏;如果有待展示的開屏則展示開屏,等待開屏展示結(jié)束再跳轉(zhuǎn)到 MainActivity,如果沒有開屏則直接跳轉(zhuǎn)到 MainActivity 。
抖音字體大小設(shè)置方法安卓 抖音字體大小設(shè)置方法


在這個流程下,我們的啟動需要經(jīng)歷兩個 Activity 的啟動,如果把這兩個 Activity 進行合并,我們可以取得兩方面的收益:
減少一次 Activity 的啟動過程;利用讀取開屏信息的時間,做一些與 Activity 強關(guān)聯(lián)的并發(fā)任務(wù),比如異步 View 預(yù)加載等 。

推薦閱讀