麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種基于Android系統實現快速開機的方法與流程

文檔序號:11154521閱讀:1040來源:國知局
一種基于Android系統實現快速開機的方法與制造工藝

本發明涉及計算機操作系統技術領域,尤其涉及一種基于Android系統實現快速開機的方法。



背景技術:

Android系統為當前最流行的消費電子軟件系統,雖然用戶群廣,但大家都拿其運行體驗與IOS系統比較。Android系統為了運行時的體驗效果,設計了預加載模式,這就犧牲了開機速度這一體驗。

所謂預加載是指Zygote在開機的時候加載了一個大而全的應用運行環境。Zygote是整個Android系統中所有應用的母本,所以其對整個系統來說是非常重要的;所以需要在對系統中所有應用都不影響的前提下,去優化其對開機時間的影響。在Android系統中,所有的應用進程以及系統服務進程SystemServer都是由Zygote進程創建出來的,Zygote創建其他進程的時候都會復制本身的環境的給每一個新的進程。這樣雖然每一個應用的環境不用自己加載,但Zygote需要加載資源就非常多。需要加載的資源數量龐大加上Zygote同步加載資源的方式,這就導致了目前雖然硬件性能在不斷提升但開機時間不見減少的問題。為此本發明設計了一套縮短Zygote加載資源對開機時間影響的方法。



技術實現要素:

針對現有技術存在的不足之處,本發明的目的在于提供一種基于Android系統實現快速開機的方法,縮短了Android系統開機時的預加載資源時間,提升了整個Android系統的開機速度,使用戶能更快使用到Android智能設備,提升產品體驗操作,增強產品的競爭力。

本發明的目的通過下述技術方案實現:

一種基于Android系統實現快速開機的方法,對Android系統中Zygote加載的所有資源按照是否為SystemServer初始化所需劃分為ResA和ResB兩部分,其中ResA為SystemServer初始化過程中所需要的所有資源,ResB為SystemServer初始化過程中不需要的所有資源,ResB包括所有APP應用所對應的資源;

其開機方法步驟如下:

A、Android系統開機啟動,Zygote首先加載ResA資源,確保ResA的所有資源加載完畢后,馬上啟動SystemServer;

B、啟動SystemServer后,Zygote開始加載ResB的部分資源,并提供同步等待ResB加載完成的接口,可供SystemServer啟動APP應用前調用;

C、SystemServer啟動APP應用后,完成與該APP應用相對應的剩余所有ResB資源加載。

為了更好地實現本發明,一種基于Android系統實現快速開機的方法,對Android系統中Zygote加載的所有資源按照是否為SystemServer初始化所需劃分為ResA和ResB兩部分,其中ResA為SystemServer初始化過程中所需要的所有資源,ResB為SystemServer初始化過程中不需要的所有資源,ResB包括所有APP應用所對應的資源;將ResA的資源劃分為ResA1、ResA2、ResA3…ResAn共計n個組資源,每組資源的加載耗時相當或相同;

其開機方法步驟如下:

A、Android系統開機啟動,Zygote首先加載ResA資源,Zygote分別異步加載ResA1、ResA2、ResA3…ResAn共計n組資源,確保ResA的所有資源加載完畢后,馬上啟動SystemServer;

B、啟動SystemServer后,Zygote開始加載ResB的部分資源,并提供同步等待ResB加載完成的接口,可供SystemServer啟動APP應用前調用;

C、SystemServer啟動APP應用后,完成與該APP應用相對應的剩余所有ResB資源加載。

Android系統的開機過程為:Linux啟動Zygote,Zygote完成啟動后在由Zygote啟動SystemServer,SystemServer完成啟動后SystemServer就會啟動應用程序,這時這個系統完成開機。整個過程中Zygote和SystemServer是串行啟動,并且各自內部初始化也串行加載的。整個流程可見圖1。由于加載模式和啟動方式的限制,導致雖然硬件性能在不斷提升但開機時間不見縮短的問題。目前很多終端性能都很強大,很多都是雙核或者是四核CPU,使用bootchart可以清楚看到Zygote和SystemServer啟動過程中CPU負載并不高。所以對于高性能的終端通過調整加載資源的方式完全可以實現縮短Android系統開機時間的目的。

Zygote所預加載的資源是整個系統所需要的,雖然SystemServer啟動所需資源是依賴于Zygote,但SystemServer初始化所需的資源是小于Zygote所全部加載的資源。所以本發明設計了一種分段加載與多線程異步加載相結合的方案。

分段是指:將Zygote需要加載的所有資源分為兩部分,SystemServer初始化時需要的資源(以下簡稱ResA)和其他剩余資源(以下簡稱ResB),Zygote先加載ResA,然后馬上啟動SystemServer,最后再加載ResB。異步是指:Zygote在加載ResA時,為了充分利用硬件的性能,采用多線程異步加載的方式,將ResA分為多組,一個線程加載一組。ResA分多少組是根據具體終端的性能來確定,終端能最快異步加載多少組資源,就將ResA分為多少組;而每一組中具體資源是根據每個資源加載耗時來確定,確保每一組加載耗時差在可以接受的范圍。

Zygote先以最快速度加載第一段資源,然后啟動SyetemServer,再加載剩下的一段資源,這樣將整個資源分為兩段加載,并在加載第一段的時候采用異步多線的方式。由于使用了異步加載機制,但SyetemServer和APP又都依賴于Zygote所加載的資源;所以需要在SystemServer啟動時增加ResA加載完成的同步檢查、需要在APP啟動時增加ResB加載完成的同步檢查。對于ResA的檢查,需要Zygote的主線程在同步等待每一個加載ResA的線程完成后再啟動SystemServer;而對于ResB的檢查,需要Zygote提供同步等待ResB加載完成的接口,可供SystemServer啟動APP前調用。

整個優化后的流程可見附圖二。

本發明較現有技術相比,具有以下優點及有益效果:

本發明縮短了Android系統開機時的預加載資源時間,提升了整個Android系統的開機速度,使用戶能更快使用到Android智能設備,提升產品體驗操作,增強產品的競爭力。

附圖說明

圖1為傳統Android系統開機流程示意圖;

圖2為本發明基于Android系統實現快速開機的流程示意圖。

具體實施方式

下面結合實施例對本發明作進一步地詳細說明:

實施例一

如圖2所示,一種基于Android系統實現快速開機的方法,對Android系統中Zygote加載的所有資源按照是否為SystemServer初始化所需劃分為ResA和ResB兩部分,其中ResA為SystemServer初始化過程中所需要的所有資源,ResB為SystemServer初始化過程中不需要的所有資源,ResB包括所有APP應用所對應的資源;

其開機方法步驟如下:

A、Android系統開機啟動,Zygote首先加載ResA資源,確保ResA的所有資源加載完畢后,馬上啟動SystemServer;

B、啟動SystemServer后,Zygote開始加載ResB的部分資源,并提供同步等待ResB加載完成的接口,可供SystemServer啟動APP應用前調用;

C、SystemServer啟動APP應用后,完成與該APP應用相對應的剩余所有ResB資源加載。

實施例二

如圖2所示,一種基于Android系統實現快速開機的方法,對Android系統中Zygote加載的所有資源按照是否為SystemServer初始化所需劃分為ResA和ResB兩部分,其中ResA為SystemServer初始化過程中所需要的所有資源,ResB為SystemServer初始化過程中不需要的所有資源,ResB包括所有APP應用所對應的資源;將ResA的資源劃分為ResA1、ResA2、ResA3…ResAn共計n個組資源,每組資源的加載耗時相當或相同;

其開機方法步驟如下:

A、Android系統開機啟動,Zygote首先加載ResA資源,Zygote分別異步加載ResA1、ResA2、ResA3…ResAn共計n組資源,確保ResA的所有資源加載完畢后,馬上啟動SystemServer;

B、啟動SystemServer后,Zygote開始加載ResB的部分資源,并提供同步等待ResB加載完成的接口,可供SystemServer啟動APP應用前調用;

C、SystemServer啟動APP應用后,完成與該APP應用相對應的剩余所有ResB資源加載。

實施例三

如圖2所示,一種基于Android系統實現快速開機的方法,對Android系統中Zygote加載的所有資源按照是否為SystemServer初始化所需劃分為ResA和ResB兩部分,其中ResA為SystemServer初始化過程中所需要的所有資源,ResB為SystemServer初始化過程中不需要的所有資源,ResB包括所有APP應用所對應的資源;將ResA的資源劃分為ResA1、ResA2、ResA3…ResAn共計n個組資源,每組資源的加載耗時相當或相同;

其開機方法步驟如下:

1、Zygote在加載ResA時,根據ResA的分組建立對應的線程異步加載每一組資源;并在主線程中增加每一個線程加載完成狀態同步機制。在確保所有異步加載ResA的線程完成后及ResA完成加載后,馬上啟動SystemServer。

2、啟動SystemServer后,Zygote開始加載ResB。并提供同步等待ResB加載完成的接口,可供SystemServer啟動APP前調用。

3、SystemServer在完成啟動后,在啟動APP前,增加同步等待查詢Zygote中ResB加載情況的步驟。確保APP啟動時Zygote已經完成所有資源的加載

4、SystemServer啟動APP后,開始加載ResB。

以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 游戏| 明溪县| 辽阳市| 宜昌市| 应城市| 犍为县| 徐闻县| 旌德县| 辉南县| 秦皇岛市| 满城县| 宣武区| 错那县| 昆明市| 开封市| 通河县| 高雄县| 清水县| 巩义市| 武功县| 青田县| 邢台县| 竹溪县| 教育| 濮阳县| 吉木乃县| 正安县| 吴江市| 昌黎县| 普宁市| 青阳县| 延川县| 太湖县| 洛川县| 博湖县| 闵行区| 沐川县| 永平县| 宁津县| 吴忠市| 元朗区|