一种基于Android系统的移动终端的热启动的方法

文档序号:7982664阅读:168来源:国知局
一种基于Android系统的移动终端的热启动的方法
【专利摘要】本发明公开了一种基于Android系统的移动终端的热启动的方法,当所述移动终端接收用户的热启动指令后,终止Zygote及Zygote创建的所有子程序;然后,Zygote重新启动,Zygote重新创建系统服务进程和预先设定的Android服务程序,完成热启动。从而无需对移动终端断电便可实现重新启动,一方面减少了系统重启所花费的时间,另一方面加快了系统运行的速度(所有服务都被重启),提高了用户体验。
【专利说明】—种基于Android系统的移动终端的热启动的方法
【技术领域】
[0001]本发明涉及Android应用【技术领域】,特别涉及用于一种基于Android系统的移动 终端的热启动的方法。
【背景技术】
[0002]Android (安卓)系统是一种以Linux为基础的开放源代码操作系统,作为一款开 放式的操作系统,随着Android系统的快速发展,如今已允许开发者使用多种编程语言来 开发Android应用程序,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。
[0003]基于Android系统的智能手机目前越来越普及,相对于非智能手机而言,智能手 机在开机速度上所花费的时间是比较长的。当使用的应用程序存在内存泄露,或者占用的 内存比较大的话,会导致Android系统越用越慢,智能手机出现卡顿的现象。
[0004]目前,当出现卡顿等现象时,用户通常的做法是长按关机键关掉Android系统然 后再开机,有时候甚至迫不得已采用抠电池的极端方式关闭系统,然后再花费很长的时间 来开机,从而给用户带来不便。
[0005]有鉴于此,现有技术还有待改进和提高。

【发明内容】

[0006]鉴于上述现有技术的不足之处,本发明的目的在于提供一种基于Android系统的 移动终端的热启动的方法,以解决现有技术中的基于An dr 0 i d系统的智能手机,长时间使 用后系统变慢时,只能长按关机键或采用断电等方式来关闭系统,再重新启动的问题。
[0007]为了达到上述目的,本发明采取了以下技术方案:
一种基于Android系统的移动终端的热启动的方法,其中,所述方法包括以下步骤: STA、所述移动终端接收用户的热启动指令,终止Zygote及Zygote创建的所有子程
序;
STB、Zygote重新启动,Zygote重新创建系统服务进程和预先设定的Android服务程 序,完成热启动。
[0008]优选地,所述的基于Android系统的移动终端的热启动的方法,其中,所述步骤A 具体包括:
ST1、移动终端开机时启动一可执行文件CmdServer,运行Socket服务端,并监听重新 启动的指令%5口 ;
ST2、所述移动终端接收用户的热启动指令,找到Zygote的进程ID号,建立Socket客 户端,通过Socket客户端将所述Zygote的进程ID号发送到重新启动的指令端口 ;
ST3、Socket服务端接收到来自重新启动的指令端口的Zygote的进程ID号,终止 Zygote ;
ST4、Zygote的父进程Init接收到Zygote的终止信息后,终止Zygote创建的所有子 进程。[0009]优选地,所述的基于Android系统的移动终端的热启动的方法,其中,所述步骤 STl中的重新启动的指令端口为5200端口。
[0010]优选地,所述的基于Android系统的移动终端的热启动的方法,其中,所述步骤 ST3中Socket服务端终止Zygote具体采用以下步骤:
Socket服务端调用systemO函数,执行命令“kill _9 Zygote的进程ID号”。
[0011]优选地,所述的基于An dr O i d系统的移动终端的热启动的方法,其中,所述步骤 ST4中还包括:
Init 标记 init.svc.zygote 的值为 restarting。
[0012]优选地,所述的基于Android系统的移动终端的热启动的方法,其中,所述步骤B 具体包括:
Zygote的父进程Init重新启动Zygote,进而启动Davik VM,Davik VM启动系统服务 进程,接着启动Framework和预先设定的Android服务程序。
[0013]优选地,所述的基于Android系统的移动终端的热启动的方法,其中,所述 Framework 包括:Activity Manager 和 Windows Manager, Activity Manager 负责把 Home 引导完毕。
[0014]优选地,所述的基于Android系统的移动终端的热启动的方法,其中,所述移动终 夂而为手机。
[0015]有益效果:
相较于现有技术,本发明提供的基于Android系统的移动终端的热启动的方法,无需 对移动终端断电便可实现重新启动,一方面减少了系统重启所花费的时间,另一方面加快 了系统运行的速度(所有服务都被重启),提高了用户体验。
【专利附图】

【附图说明】
[0016]图1为本发明的基于Android系统的移动终端的热启动的方法的流程图。
[0017]图2为本发明的基于Android系统的移动终端的热启动的方法中终止Zygote及 Zygote创建的所有子程序的实施例的示意图。
【具体实施方式】
[0018]本发明提供一种基于Android系统的移动终端的热启动的方法,为使本发明的目 的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0019]首先介绍一下Android系统的启动过程:
Android系统启动过程分为两个阶段,第一个阶段是Linux (—种类UNIX计算机操作 系统)的启动,主要顺序是上电、加载BootLoader (引导加载程序)引导、启动Kernel (即 Linux内核)、加载Driver (设备驱动)等,第二个阶段是Android的启动,即内核空间进 入用户空间后,第一个运行init程序,该程序启动android的native (本地)服务,包括 Servicemanager (服务管理器)和Zygote (孵化器)进程,它们两个奠定了 Android的基础。 Zygote利用Socket (套接字)通讯,接收ActivityManagerService (活动管理服务,用于提 供给ActivityManager接口)的请求,Fork (派生)出各种应用程序。基于上面的描述,本发明的热启动就是不再走第一个阶段,直接进行第二阶段=Android的启动。其中,所有的 JAVA应用程序进程以及大部分系统都是由Zygote派生出来的,当Zygote完成了 JAVA世界的初创阶段后,就进入了不断等待的阶段,等待子进程的请求,比如创建一个Activity。 Zygote主要负责启动system server (系统服务进程)和执行android程序(APK)。成功启动 system server 后会使用 socket 方式监听(monitor android apps/prcesses)。
[0020]请参阅图1,图1为本发明的基于Android系统的移动终端的热启动的方法的流程图。如图所示,所述方法包括两个步骤:
A、移动终端接收用户的热启动指令,终止Zygote及Zygote创建的所有子程序;
B、移动终端的Zygote重新启动,Zygote重新创建系统服务进程和预先设定的 Andro i d服务程序,完成热启动。
[0021]下面分别针对上述步骤进行详细介绍:
所述步骤A是当移动终端接收用户的热启动指令后,终止Zygote及Zygote创建的所有子程序。在本实施例中,如图2所示,所述步骤A具体包括:
S1、移动终端开机时启动一可执行文件CmdServer (即请求命令接收服务端),运行 Socket服务端,并监听重新启动的指令端口 ;其中,所述重新启动的指令端口可以任意设定,只要不占用操作系统指定的端口即可。在本实施例中,采用5200端口作为重新启动的指令端口。
[0022]S2、所述移动终端(如:手机、PAD等)接收用户的热启动指令,找到Zygote的进程 ID号,建立Socket客户端,通过Socket客户端将所述Zygote的进程ID号发送到重新启动的指令端口 ;其中,所述用户的热启动指令可以采用多种方式,比如,采用一些组合按键(例如:关机键和上键等)。当用户想重新启动移动终端时(如感觉系统变慢等),可以通过组合按键来发送热启动指令。然后,移动终端便去寻找到Zygote的进程ID号,建立Socket客户端(与步骤SI中的Socket服务端对应),通过Socket客户端将所述Zygote的进程ID号发送到重新启动的指令端口。
[0023]S3、Socket 服务端接收到来自重新启动的指令端口的Zygote的进程ID号,终止 Zygote ;在本实施例中Socket服务端终止Zygote具体为:Socket服务端调用systemO函数,执行命令“kill -9 Zygote的进程ID号”。此时,Zygote便被终止了。
[0024]S4、Zygote的父进程Init接收到Zygote的终止信息后,终止Zygote创建的所有子进程。同时,退出JAVA。为了方便后续重启Zygote,在本实施例中,Init标记init.svc.zygote的值为restarting (重新启动)。因为,Init处理完请求后,就会重新启动标记为 restarting属性的服务,Zygote就会被再次启动。
[0025]当完成了 Zygote的终止后,便进行步骤B,此时,Zygote重新启动,Zygote重新创建系统服务进程(也称systemserver,该系统服务的功能是启动所有native (本地)服务以及JAVA核心服务)和预先设定的Android服务程序,完成热启动。具体来说,Zygote的父进程Init重新启动Zygote,进而启动Davik VM, Davik VM启动系统服务进程,接着启动 Framework (框架)和预先设定的Android服务程序。其中,所述Framework包括:Activity Manager (活动管理器,相当于android的一个客户端,用于调用ActivityManagerService 的接口^nWindows Manager (窗口管理器)等,Activity Manager负责把Home (桌面程序, 即主页)引导完毕。所述预先设定的Android服务程序应当为Android系统的核心程序,即用户开机时,默认启动的。
[0026]综上所述,本发明的基于Android系统的移动终端的热启动的方法,当所述移动 终端接收用户的热启动指令后,终止Zygote及Zygote创建的所有子程序;然后,Zygote重 新启动,Zygote重新创建系统服务进程和预先设定的Android服务程序,完成热启动。从 而无需对移动终端断电便可实现重新启动,一方面减少了系统重启所花费的时间,另一方 面加快了系统运行的速度(所有服务都被重启),提高了用户体验。
[0027]可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发 明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保 护范围。
【权利要求】
1.一种基于Android系统的移动终端的热启动的方法,其特征在于,所述方法包括以 下步骤:STA、移动终端接收用户的热启动指令,终止Zygote及Zygote创建的所有子程序;STB、Zygote重新启动,Zygote重新创建系统服务进程和预先设定的Android服务程 序,完成热启动。
2.根据权利要求1所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述步骤STA具体包括:ST1、移动终端开机时启动一可执行文件CmdServer,运行Socket服务端,并监听重新 启动的指令%5口 ;ST2、所述移动终端接收用户的热启动指令,找到Zygote的进程ID号,建立Socket客 户端,通过Socket客户端将所述Zygote的进程ID号发送到重新启动的指令端口 ;ST3、Socket服务端接收到来自重新启动的指令端口的Zygote的进程ID号,终止 Zygote ;ST4、Zygote的父进程Init接收到Zygote的终止信息后,终止Zygote创建的所有子 进程。
3.根据权利要求2所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述步骤STl中的重新启动的指令端口为5200端口。
4.根据权利要求2所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述步骤ST3中Socket服务端终止Zygote具体采用以下步骤:Socket服务端调用systemO函数,执行命令“kill _9 Zygote的进程ID号”。
5.根据权利要求2所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述步骤ST4中还包括:Init 标记 init.svc.zygote 的值为 restarting。
6.根据权利要求2所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述步骤STB具体包括:Zygote的父进程Init重新启动Zygote,进而启动Davik VM,Davik VM启动系统服务 进程,接着启动Framework和预先设定的Android服务程序。
7.根据权利要求6所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述 Framework 包括:Activity Manager 和 Windows Manager, Activity Manager 负责把 Home引导完毕。
8.根据权利要求1所述的基于Android系统的移动终端的热启动的方法,其特征在于, 所述移动终端为手机。
【文档编号】H04M1/725GK103514007SQ201210317478
【公开日】2014年1月15日 申请日期:2012年8月31日 优先权日:2012年8月31日
【发明者】曹霄 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1