一種基于Android系統(tǒng)的移動終端的熱啟動的方法
【專利摘要】本發(fā)明公開了一種基于Android系統(tǒng)的移動終端的熱啟動的方法,當所述移動終端接收用戶的熱啟動指令后,終止Zygote及Zygote創(chuàng)建的所有子程序;然后,Zygote重新啟動,Zygote重新創(chuàng)建系統(tǒng)服務進程和預先設定的Android服務程序,完成熱啟動。從而無需對移動終端斷電便可實現(xiàn)重新啟動,一方面減少了系統(tǒng)重啟所花費的時間,另一方面加快了系統(tǒng)運行的速度(所有服務都被重啟),提高了用戶體驗。
【專利說明】—種基于Android系統(tǒng)的移動終端的熱啟動的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及Android應用【技術(shù)領(lǐng)域】,特別涉及用于一種基于Android系統(tǒng)的移動 終端的熱啟動的方法。
【背景技術(shù)】
[0002]Android (安卓)系統(tǒng)是一種以Linux為基礎(chǔ)的開放源代碼操作系統(tǒng),作為一款開 放式的操作系統(tǒng),隨著Android系統(tǒng)的快速發(fā)展,如今已允許開發(fā)者使用多種編程語言來 開發(fā)Android應用程序,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。
[0003]基于Android系統(tǒng)的智能手機目前越來越普及,相對于非智能手機而言,智能手 機在開機速度上所花費的時間是比較長的。當使用的應用程序存在內(nèi)存泄露,或者占用的 內(nèi)存比較大的話,會導致Android系統(tǒng)越用越慢,智能手機出現(xiàn)卡頓的現(xiàn)象。
[0004]目前,當出現(xiàn)卡頓等現(xiàn)象時,用戶通常的做法是長按關(guān)機鍵關(guān)掉Android系統(tǒng)然 后再開機,有時候甚至迫不得已采用摳電池的極端方式關(guān)閉系統(tǒng),然后再花費很長的時間 來開機,從而給用戶帶來不便。
[0005]有鑒于此,現(xiàn)有技術(shù)還有待改進和提高。
【發(fā)明內(nèi)容】
[0006]鑒于上述現(xiàn)有技術(shù)的不足之處,本發(fā)明的目的在于提供一種基于Android系統(tǒng)的 移動終端的熱啟動的方法,以解決現(xiàn)有技術(shù)中的基于An dr 0 i d系統(tǒng)的智能手機,長時間使 用后系統(tǒng)變慢時,只能長按關(guān)機鍵或采用斷電等方式來關(guān)閉系統(tǒng),再重新啟動的問題。
[0007]為了達到上述目的,本發(fā)明采取了以下技術(shù)方案:
一種基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述方法包括以下步驟: STA、所述移動終端接收用戶的熱啟動指令,終止Zygote及Zygote創(chuàng)建的所有子程
序;
STB、Zygote重新啟動,Zygote重新創(chuàng)建系統(tǒng)服務進程和預先設定的Android服務程 序,完成熱啟動。
[0008]優(yōu)選地,所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述步驟A 具體包括:
ST1、移動終端開機時啟動一可執(zhí)行文件CmdServer,運行Socket服務端,并監(jiān)聽重新 啟動的指令%5口 ;
ST2、所述移動終端接收用戶的熱啟動指令,找到Zygote的進程ID號,建立Socket客 戶端,通過Socket客戶端將所述Zygote的進程ID號發(fā)送到重新啟動的指令端口 ;
ST3、Socket服務端接收到來自重新啟動的指令端口的Zygote的進程ID號,終止 Zygote ;
ST4、Zygote的父進程Init接收到Zygote的終止信息后,終止Zygote創(chuàng)建的所有子 進程。[0009]優(yōu)選地,所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述步驟 STl中的重新啟動的指令端口為5200端口。
[0010]優(yōu)選地,所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述步驟 ST3中Socket服務端終止Zygote具體采用以下步驟:
Socket服務端調(diào)用systemO函數(shù),執(zhí)行命令“kill _9 Zygote的進程ID號”。
[0011]優(yōu)選地,所述的基于An dr O i d系統(tǒng)的移動終端的熱啟動的方法,其中,所述步驟 ST4中還包括:
Init 標記 init.svc.zygote 的值為 restarting。
[0012]優(yōu)選地,所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述步驟B 具體包括:
Zygote的父進程Init重新啟動Zygote,進而啟動Davik VM,Davik VM啟動系統(tǒng)服務 進程,接著啟動Framework和預先設定的Android服務程序。
[0013]優(yōu)選地,所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述 Framework 包括:Activity Manager 和 Windows Manager, Activity Manager 負責把 Home 引導完畢。
[0014]優(yōu)選地,所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其中,所述移動終 夂而為手機。
[0015]有益效果:
相較于現(xiàn)有技術(shù),本發(fā)明提供的基于Android系統(tǒng)的移動終端的熱啟動的方法,無需 對移動終端斷電便可實現(xiàn)重新啟動,一方面減少了系統(tǒng)重啟所花費的時間,另一方面加快 了系統(tǒng)運行的速度(所有服務都被重啟),提高了用戶體驗。
【專利附圖】
【附圖說明】
[0016]圖1為本發(fā)明的基于Android系統(tǒng)的移動終端的熱啟動的方法的流程圖。
[0017]圖2為本發(fā)明的基于Android系統(tǒng)的移動終端的熱啟動的方法中終止Zygote及 Zygote創(chuàng)建的所有子程序的實施例的示意圖。
【具體實施方式】
[0018]本發(fā)明提供一種基于Android系統(tǒng)的移動終端的熱啟動的方法,為使本發(fā)明的目 的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實施例對本發(fā)明進一步詳細說明。 應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0019]首先介紹一下Android系統(tǒng)的啟動過程:
Android系統(tǒng)啟動過程分為兩個階段,第一個階段是Linux (—種類UNIX計算機操作 系統(tǒng))的啟動,主要順序是上電、加載BootLoader (引導加載程序)引導、啟動Kernel (即 Linux內(nèi)核)、加載Driver (設備驅(qū)動)等,第二個階段是Android的啟動,即內(nèi)核空間進 入用戶空間后,第一個運行init程序,該程序啟動android的native (本地)服務,包括 Servicemanager (服務管理器)和Zygote (孵化器)進程,它們兩個奠定了 Android的基礎(chǔ)。 Zygote利用Socket (套接字)通訊,接收ActivityManagerService (活動管理服務,用于提 供給ActivityManager接口)的請求,F(xiàn)ork (派生)出各種應用程序。基于上面的描述,本發(fā)明的熱啟動就是不再走第一個階段,直接進行第二階段=Android的啟動。其中,所有的 JAVA應用程序進程以及大部分系統(tǒng)都是由Zygote派生出來的,當Zygote完成了 JAVA世界的初創(chuàng)階段后,就進入了不斷等待的階段,等待子進程的請求,比如創(chuàng)建一個Activity。 Zygote主要負責啟動system server (系統(tǒng)服務進程)和執(zhí)行android程序(APK)。成功啟動 system server 后會使用 socket 方式監(jiān)聽(monitor android apps/prcesses)。
[0020]請參閱圖1,圖1為本發(fā)明的基于Android系統(tǒng)的移動終端的熱啟動的方法的流程圖。如圖所示,所述方法包括兩個步驟:
A、移動終端接收用戶的熱啟動指令,終止Zygote及Zygote創(chuàng)建的所有子程序;
B、移動終端的Zygote重新啟動,Zygote重新創(chuàng)建系統(tǒng)服務進程和預先設定的 Andro i d服務程序,完成熱啟動。
[0021]下面分別針對上述步驟進行詳細介紹:
所述步驟A是當移動終端接收用戶的熱啟動指令后,終止Zygote及Zygote創(chuàng)建的所有子程序。在本實施例中,如圖2所示,所述步驟A具體包括:
S1、移動終端開機時啟動一可執(zhí)行文件CmdServer (即請求命令接收服務端),運行 Socket服務端,并監(jiān)聽重新啟動的指令端口 ;其中,所述重新啟動的指令端口可以任意設定,只要不占用操作系統(tǒng)指定的端口即可。在本實施例中,采用5200端口作為重新啟動的指令端口。
[0022]S2、所述移動終端(如:手機、PAD等)接收用戶的熱啟動指令,找到Zygote的進程 ID號,建立Socket客戶端,通過Socket客戶端將所述Zygote的進程ID號發(fā)送到重新啟動的指令端口 ;其中,所述用戶的熱啟動指令可以采用多種方式,比如,采用一些組合按鍵(例如:關(guān)機鍵和上鍵等)。當用戶想重新啟動移動終端時(如感覺系統(tǒng)變慢等),可以通過組合按鍵來發(fā)送熱啟動指令。然后,移動終端便去尋找到Zygote的進程ID號,建立Socket客戶端(與步驟SI中的Socket服務端對應),通過Socket客戶端將所述Zygote的進程ID號發(fā)送到重新啟動的指令端口。
[0023]S3、Socket 服務端接收到來自重新啟動的指令端口的Zygote的進程ID號,終止 Zygote ;在本實施例中Socket服務端終止Zygote具體為:Socket服務端調(diào)用systemO函數(shù),執(zhí)行命令“kill -9 Zygote的進程ID號”。此時,Zygote便被終止了。
[0024]S4、Zygote的父進程Init接收到Zygote的終止信息后,終止Zygote創(chuàng)建的所有子進程。同時,退出JAVA。為了方便后續(xù)重啟Zygote,在本實施例中,Init標記init.svc.zygote的值為restarting (重新啟動)。因為,Init處理完請求后,就會重新啟動標記為 restarting屬性的服務,Zygote就會被再次啟動。
[0025]當完成了 Zygote的終止后,便進行步驟B,此時,Zygote重新啟動,Zygote重新創(chuàng)建系統(tǒng)服務進程(也稱systemserver,該系統(tǒng)服務的功能是啟動所有native (本地)服務以及JAVA核心服務)和預先設定的Android服務程序,完成熱啟動。具體來說,Zygote的父進程Init重新啟動Zygote,進而啟動Davik VM, Davik VM啟動系統(tǒng)服務進程,接著啟動 Framework (框架)和預先設定的Android服務程序。其中,所述Framework包括:Activity Manager (活動管理器,相當于android的一個客戶端,用于調(diào)用ActivityManagerService 的接口^nWindows Manager (窗口管理器)等,Activity Manager負責把Home (桌面程序, 即主頁)引導完畢。所述預先設定的Android服務程序應當為Android系統(tǒng)的核心程序,即用戶開機時,默認啟動的。
[0026]綜上所述,本發(fā)明的基于Android系統(tǒng)的移動終端的熱啟動的方法,當所述移動 終端接收用戶的熱啟動指令后,終止Zygote及Zygote創(chuàng)建的所有子程序;然后,Zygote重 新啟動,Zygote重新創(chuàng)建系統(tǒng)服務進程和預先設定的Android服務程序,完成熱啟動。從 而無需對移動終端斷電便可實現(xiàn)重新啟動,一方面減少了系統(tǒng)重啟所花費的時間,另一方 面加快了系統(tǒng)運行的速度(所有服務都被重啟),提高了用戶體驗。
[0027]可以理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)本發(fā)明的技術(shù)方案及其發(fā) 明構(gòu)思加以等同替換或改變,而所有這些改變或替換都應屬于本發(fā)明所附的權(quán)利要求的保 護范圍。
【權(quán)利要求】
1.一種基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于,所述方法包括以 下步驟:STA、移動終端接收用戶的熱啟動指令,終止Zygote及Zygote創(chuàng)建的所有子程序;STB、Zygote重新啟動,Zygote重新創(chuàng)建系統(tǒng)服務進程和預先設定的Android服務程 序,完成熱啟動。
2.根據(jù)權(quán)利要求1所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述步驟STA具體包括:ST1、移動終端開機時啟動一可執(zhí)行文件CmdServer,運行Socket服務端,并監(jiān)聽重新 啟動的指令%5口 ;ST2、所述移動終端接收用戶的熱啟動指令,找到Zygote的進程ID號,建立Socket客 戶端,通過Socket客戶端將所述Zygote的進程ID號發(fā)送到重新啟動的指令端口 ;ST3、Socket服務端接收到來自重新啟動的指令端口的Zygote的進程ID號,終止 Zygote ;ST4、Zygote的父進程Init接收到Zygote的終止信息后,終止Zygote創(chuàng)建的所有子 進程。
3.根據(jù)權(quán)利要求2所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述步驟STl中的重新啟動的指令端口為5200端口。
4.根據(jù)權(quán)利要求2所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述步驟ST3中Socket服務端終止Zygote具體采用以下步驟:Socket服務端調(diào)用systemO函數(shù),執(zhí)行命令“kill _9 Zygote的進程ID號”。
5.根據(jù)權(quán)利要求2所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述步驟ST4中還包括:Init 標記 init.svc.zygote 的值為 restarting。
6.根據(jù)權(quán)利要求2所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述步驟STB具體包括:Zygote的父進程Init重新啟動Zygote,進而啟動Davik VM,Davik VM啟動系統(tǒng)服務 進程,接著啟動Framework和預先設定的Android服務程序。
7.根據(jù)權(quán)利要求6所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述 Framework 包括:Activity Manager 和 Windows Manager, Activity Manager 負責把 Home引導完畢。
8.根據(jù)權(quán)利要求1所述的基于Android系統(tǒng)的移動終端的熱啟動的方法,其特征在于, 所述移動終端為手機。
【文檔編號】H04M1/725GK103514007SQ201210317478
【公開日】2014年1月15日 申請日期:2012年8月31日 優(yōu)先權(quán)日:2012年8月31日
【發(fā)明者】曹霄 申請人:Tcl集團股份有限公司