色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分析Android開機啟動速度優化(含應用程序優化)

如意 ? 來源:CSDN ? 作者:Peter盼 ? 2020-06-20 10:51 ? 次閱讀

眾所周知Android開機啟動速度較慢,于是如何加快啟動速度便成為一個值得討論的問題。

在查閱過許多資料后(特別是Google Group的android-platform),我整理總結出下面幾點基本看法。

Android開機啟動耗時較多的部分有2個,分別是preload classes和scan packages。

這里又數preload classes最為耗時,在我的機子上一般需要13秒左右。實際上,在看過google group眾多關于preload class的主題后,基本可以確定以下事實:

preloaded-classes list中預加載的類位于dalvik zygote進程的heap中。在zygote衍生一個新的dalvik進程后,新進程只需加載heap中沒有預加載的類(這些后加載進來的類成為該進程所private獨有的),這樣便加快了應用程序的啟動速度。實際上這是一種以空間換時間的辦法,因為幾乎沒有一個應用程序能夠使用到所有的預加載類,必定有很多類對于該應用程序來說是冗余的。但是也正如Google所說,智能手機開機遠沒有啟動應用程序頻繁——用戶開機一次,但直到下次再開機之前可能要運行多個應用程序。因此犧牲一點啟動時間來換取應用程序加載時的較快速度是合算的。

preloaded-classes list已經是Google Android工程師使用眾多測試工具分析,加以手動微調后形成的最優化預加載列表,涵蓋了智能機上最長見的應用類型所需要的各種類。很難想象我們自己能夠有什么手段能夠獲得比這樣更優的一個預加載列表。所以,除非你的Android系統是被移植到非智能手機設備上使用(例如MID、EBOOK,可以不需要Telephony相關的類),不建議去“優化”preloaded-classes list。

在zygote中單起一個線程來做preload,是否可行?答案是否定的。首先在zygote中不可以新開線程,其次,就算新開一個線程,在目前智能機硬件條件下(單核CPU),除非有頻繁大量的存儲IO,否則我們不能看到我們期望加速啟動效果。

關于scan packages的問題。同樣參考上面提到的那篇帖子,我們從中可以知道一個事實:越少的apk安裝,越短的啟動時間。事實上確實如此,apk安裝的多少的確影響開機速度,但相比而言,scan packages所花費的時間遠沒有preload classe多。似乎這里沒有多少油水可榨,但起碼我們知道了:盡量減少產品中預置的apk數量可以提升啟動速度(哪怕精簡到極致也許只節省了2s)。

最后,關于那篇帖子中提到的start services階段,我認為雖然此階段確實需要消耗可觀的時間,但是正如文中提到的那樣,優化這些services其實就是剔除我們不需要的一些services,而且不僅僅是修改SystemServer.java的問題,任何使用到被優化剔除掉的服務的代碼都必須加以修改,否則系統肯定是起不來的。這樣工作量大,而且難度也不小,并且有一定風險。因此對這些services的優化要慎之又慎。

那么加快啟動速度是不是就沒有辦法了呢?也不是。除了硬件上的改動,在軟件上使用BLCR技術也可以解決這個問題。

在此我認為同時有必要提一下應用程序啟動速度加速的問題。用過Android的都會發現,第一次啟動某個應用程序時比較慢,但只要不關機重啟,大部分情況下以后再次啟動就明顯的要快許多。因此我們很容易想到一種辦法,即“預加載”我們的應用程序一次,那么下次用戶再次啟動我們時不就快了嗎?

我們首先明確一點:任何“預加載”的想法都是不切實際的。先不討論實施在技術上的可能性,我們只要看一下Android的Activity生命周期管理就應該明白,就算你通過某種方式“預加載”了你的某個Activity,你也不能確保在用戶真正要求開始運行它的時候,你所“預加載”的Activity還存在,因為Android很可能在你為“預加載”第一次啟動Activity后的不久就將它gc掉了。依靠一個不可靠的技術,顯然是不明智的。

那么還有沒有別的辦法呢?答案是有的,但是只在少數情況下才有一定意義。在源碼的frameworks/base/core/res/res/values/arrays.xml中,我們可以看到有名為“preloaded_drawables”的項,其中列出的是Android在啟動時預加載的圖形資源,這樣在某個應用程序需要這些圖形資源時就不必再加載了。如果我們某個應用程序包含大量的圖形資源,那么我們可以將其加入到這個preloaded_drawables項中以加快我們應用程序的啟動速度。但是這樣有一個顯而易見的弊端:同preload classes一樣,不是每個應用程序都需要所有預加載的圖形資源,這些冗余的資源反而占據了應用程序進程的內存空間。因此,這種技術實際應用的局限性較大,僅限于這樣一種情況:某個設備只運行固定的幾個應用程序,而且這些應用程序包含大量的圖形資源需要加載。但這樣會是一個什么設備呢?

好了,到此基本上把我這兩天研究的心得寫出來了。限于認識水平有限,如果文中有誤或者哪位能有更好的想法,歡迎在下面留言:)如果以后我又有心得,會再更新此文。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3939

    瀏覽量

    127581
  • 啟動速度
    +關注

    關注

    0

    文章

    2

    瀏覽量

    6596
收藏 人收藏

    評論

    相關推薦

    FRED應用:LED發光顏色優化

    ” 色度值優化函數定義 X和y色度坐標優化函數需要彩色圖像計算他們的值。輸入變量g_ana 是分析面“屏幕”的節點數。這里,只有中心像素點的值用于決定X和y的色度值,只在光束重疊區域產生
    發表于 01-07 08:51

    HarmonyOS Web開發性能優化指導

    時,Web渲染進程進程會一直存在,節省了用戶后續啟動Web組件拉起渲染進程的時間,加快頁面加載速度。 預解析:預解析指預先對DNS進行解析,可以節省DNS解析的時間,從而優化Web的加載耗時。 預
    發表于 12-06 08:41

    android手機上emulate應用程序的方法

    Android手機上模擬(emulate)應用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環境,以便在沒有實際物理設備的情況下運行
    的頭像 發表于 12-05 15:33 ?354次閱讀

    如何優化RAM內存使用

    :使用任務管理器查看當前運行的程序和服務,關閉那些不需要的。 禁用啟動程序 :減少開機啟動項,只保留必要的
    的頭像 發表于 11-11 09:58 ?430次閱讀

    如何優化EPS文件以提高加載速度

    在圖形設計和排版領域,EPS文件因其高兼容性和高質量輸出而廣受歡迎。然而,EPS文件往往體積較大,加載速度慢,這在處理大型項目或需要快速迭代時成為了一個瓶頸。 一、了解EPS文件 EPS文件是一種
    的頭像 發表于 10-30 14:32 ?374次閱讀

    DRA7xx器件上的Android啟動優化

    電子發燒友網站提供《DRA7xx器件上的Android啟動優化.pdf》資料免費下載
    發表于 10-11 09:41 ?0次下載
    DRA7xx器件上的<b class='flag-5'>Android</b><b class='flag-5'>啟動</b><b class='flag-5'>優化</b>

    使用TPS61178x優化啟動的環路補償

    電子發燒友網站提供《使用TPS61178x優化啟動的環路補償.pdf》資料免費下載
    發表于 09-25 09:58 ?0次下載
    使用TPS61178x<b class='flag-5'>優化</b><b class='flag-5'>啟動</b>的環路補償

    優化 FPGA HLS 設計

    30 到 70 種用于綜合和布局布線的設置。可能的組合太多了。可以編寫腳本來創建不同的運行并嘗試推薦的標準指令/策略。 最后一個挑戰問題是計算能力不足。典型的嵌入式應用程序是在單臺計算機
    發表于 08-16 19:56

    傾斜光柵的魯棒性優化

    直接納入優化過程,例如參數變化分析儀。該工具結合了同一系統的多次迭代,在優化過程中實現了評價函數的表示和自動計算,如平均效率。在這個用例中,我們通過稍微改變填充因子來優化傾斜光柵來演示
    發表于 08-12 18:38

    4.3s,Linux快速啟動優化方法分享,基于全志T113-i國產平臺!

    random設備初始化太慢,應用程序調用random的函數時可能被阻塞,導致應用啟動慢,因此可通過關閉crng_ready()功能從而縮短啟動時間,關閉crng_ready()功能后啟動
    發表于 07-09 11:50

    OpenHarmony之開機優化

    對其進行詳細的性能分析,從而優化系統啟動速度和運行效率。 三丶開機優化
    發表于 07-01 16:39

    優化嵌入式DSP軟件的編譯器

    確定哪個索引或一組索引對于優化很重要取決于應用程序開發人員的目標。例如,性能優化意味著開發人員可以使用速度較慢或成本較低的 DSP 來完成相同數量的工作。
    發表于 05-03 09:45 ?266次閱讀
    <b class='flag-5'>優化</b>嵌入式DSP軟件的編譯器

    設置應用冷啟動優化案例

    簡介 應用App的啟動速度能夠影響用戶的首次體驗,啟動速度較慢的應用可能導致用戶再次開啟App的意圖下降,或者卸載放棄該應用程序,所以,AP
    發表于 04-22 16:31

    Linux開機啟動方案

    不管組件是否已經安裝為系統服務,可以通過開機啟動腳本實現 注意,以下操作,均需要設置相關腳本的可執行權限,即 chmod +x 啟動腳本 方法一:追加啟動命令到默認
    發表于 04-22 09:45 ?271次閱讀

    如何對MD5加密算法優化

    有人針對程序安全啟動過程,進行MD5算法的優化嘛。目前采用標準算法,時間稍長,如果有人做過優化的話,可以分享一下,謝謝。
    發表于 02-18 08:20
    主站蜘蛛池模板: 男宿舍里的呻吟h| av av在线| 精品高潮呻吟99AV无码| 99pao成人国产永久免费视频| 十分钟视频影院免费| 恋夜影院支持安卓视频美女| 国产精品亚洲在钱视频 | 五月丁香婷姐色| 男人天堂2018亚洲男人天堂| 好好的曰com久久| 大乳牛奶女在线观看| 19不插片免费视频| 亚洲色欲国产AV精品综合| 涩涩涩涩爱网站| 欧美伊人久久大香线蕉综合69 | 特级做A爰片毛片免费69| 男人叼女人| 啦啦啦 中文 日本 韩国 免费| 国产午夜精品不卡观看| 成人在线视频网站| 99久久精品免费精品国产| 亚洲综合中文| 亚洲AV國產国产久青草| 日本美女阴道| 欧美zzzoooxxx| 久久久午夜精品福利内容| 国产亚洲日韩另类在线播放| 国产成人拍精品免费视频爱情岛 | 无遮掩H黄纯肉动漫在线观看星| 欧美一级成人影院免费的| 门事件快播| 凌馨baby| 六月婷婷国产精品综合| 久久91精品国产91久久户| 国内卡一卡二卡三免费网站| 国产乱国产乱老熟300部视频| 国产69精品久久久久乱码韩国| 成年人免费观看视频网站| 芭乐视频免费资源在线观看| 91热久久免费频精品动漫99| 2021乱码精品公司|