CN105511874A - 嵌入式系统启动方法和智能终端 - Google Patents
嵌入式系统启动方法和智能终端 Download PDFInfo
- Publication number
- CN105511874A CN105511874A CN201510874059.8A CN201510874059A CN105511874A CN 105511874 A CN105511874 A CN 105511874A CN 201510874059 A CN201510874059 A CN 201510874059A CN 105511874 A CN105511874 A CN 105511874A
- Authority
- CN
- China
- Prior art keywords
- prestrain
- embedded system
- application
- class
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了嵌入式系统启动方法和智能终端,该方法中,创建孵化器进程后,可以根据中央处理器的核数,将所有预加载类分为相应数量的组;根据核数,通过孵化器进程启动相应数量的任务,分别加载各组的预加载类;加载完所有的预加载类后,启动嵌入式系统的应用启动器。进一步地,该方法中,创建系统服务进程后,可以通过系统服务进程扫描解析预定义的核心应用;核心应用的解析任务完成后,由系统服务进程广播第一消息;接收到第一消息后,启动嵌入式系统的应用启动器。应用本发明,可以提高嵌入式系统的启动速度,进而提高用户体验。
Description
技术领域
本发明涉及操作系统技术领域,具体而言,本发明涉及嵌入式系统启动方法和智能终端。
背景技术
智能电视具有全开放式平台,搭载了操作系统,可以由用户自行安装和卸载软件、游戏等第三方服务商提供的应用程序,拥有传统电视厂商所不具备的应用平台优势。
目前,智能电视通常可以搭载Android(安卓)操作系统等嵌入式系统;在智能电视完成嵌入式系统的启动之后,用户可以通过已安装的各种应用程序,实现网络搜索、视频点播、数字音乐、网络新闻、网络视频电话等各种应用服务,带给用户更便捷的体验。
实际应用中,如图1所示,嵌入式系统的启动流程通常包括如下步骤:
S101:系统上电。
S102:系统引导程序。
S103:启动内核Kernel。
S104:创建初始化进程Init。
S105:创建系统运行所需软件库Runtime。
S106:创建守护进程Demons。
S107:创建用户进程孵化器Zygote;
S108:创建虚拟机VM。
S109:创建系统服务进程SystemServer。
S110:启动应用启动器Launcher。
事实上,嵌入式系统的启动过程中,需要通过SystemServer对系统中已经安装的应用程序进行扫描解析之后,才可以进行Launcher的启动;而Launcher在启动的时候会通过SystemServer启动的PackageManagerService(应用程序管理服务)把系统中已经安装好的应用程序以快捷图标的形式展示在桌面上,这样用户就可以使用这些应用程序了。
然而,本发明的发明人发现,随着智能电视中安装的应用程序的增加,智能电视的启动速度越来越慢,降低了用户体验。因此,有必要提供一种能够提高嵌入式系统的启动速度的启动方法。
发明内容
针对上述现有技术存在的缺陷,本发明提供了嵌入式系统启动方法和智能终端,可以提高嵌入式系统的启动速度,从而提高用户体验。
本发明提供了一种嵌入式系统启动方法,包括:
创建孵化器Zygote进程后,获取中央处理器的核数;
根据所述核数,将所有预加载类分为相应数量的组;其中,各组中的预加载类不依赖于其它组的预加载类;
根据所述核数,通过所述Zygote进程启动相应数量的任务,分别加载各组的预加载类;
加载完所有的预加载类后,启动所述嵌入式系统的应用启动器Launcher。
较佳地,所述加载完所有的预加载类之后,还包括:
通过所述Zygote进程创建所述嵌入式系统的系统服务SystemServer进程。
较佳地,所述启动所述嵌入式系统的应用启动器Launcher之前,还包括:
通过所述SystemServer进程扫描解析预定义的核心应用;
所述核心应用的解析任务完成后,由所述SystemServer进程广播第一消息;以及
所述启动应用启动器Launcher,具体包括:
接收到所述第一消息后,启动所述Launcher。
较佳地,所述接收到第一消息之后,还包括:
通过所述SystemServer进程启动新任务扫描解析其它已安装的应用;
其它已安装的应用的解析任务完成后,由所述SystemServer进程广播第二消息;
接收到第二消息后,结束所述嵌入式系统的启动。
较佳地,所述创建孵化器Zygote进程之前,还包括:
系统上电、系统引导程序、启动内核、以及创建初始化进程;以及
创建孵化器Zygote进程,具体包括:
通过创建的初始化进程来创建Zygote进程。
本发明还提供了一种智能终端,包括:
预加载类分组模块,用于在所述智能终端中嵌入式系统的Zygote进程创建之后,获取中央处理器的核数;并根据所述核数,将所有预加载类分为相应数量的组;其中,各组中的预加载类不依赖于其它组的预加载类;
预加载类加载模块,用于根据中央处理器的核数,通过所述Zygote进程启动相应数量的任务,分别加载各组的预加载类;
系统启动模块,用于在所述预加载类加载模块加载完所有的预加载类后,启动所述嵌入式系统的Launcher。
较佳地,智能终端还包括:
系统服务进程创建模块,用于通过所述Zygote进程创建SystemServer进程。
较佳地,智能终端还包括:
核心应用扫描解析模块,用于通过所述SystemServer进程扫描解析预定义的核心应用;所述核心应用的解析任务完成后,由所述SystemServer进程广播第一消息;以及
所述系统启动模块具体用于接收到所述第一消息后,启动所述Launcher。
较佳地,所述核心应用扫描解析模块还用于通过所述SystemServer进程启动新任务扫描解析其它已安装的应用;其它已安装的应用的解析任务完成后,由所述SystemServer进程广播第二消息;以及
所述系统启动模块还用于接收到第二消息后,结束所述嵌入式系统的启动。
较佳地,所述智能终端还包括:
预启动模块,用于在孵化器Zygote进程创建之前,进行系统上电、系统引导程序、启动内核、以及创建初始化进程;通过创建的初始化进程来创建Zygote进程。
本发明的方案中,根据中央处理器的核数,将所有预加载类分为相应数量的组,并通过Zygote进程启动相应数量的任务,分别加载各组的预加载类。这样,通过多任务同时来加载嵌入式系统所需的预加载类,相比现有单任务循环的方式来加载预加载类,大大减少了预加载类的加载时间,从而有利于提高嵌入式系统的启动速度,进而提高用户体验。
进一步地,本发明的方案中,预先定义核心应用,并通过SystemServer进程优先扫描解析预定义的核心应用,在核心应用的解析任务完成后,启动嵌入式系统的Launcher,使得嵌入式系统启动成功。之后,通过SystemServer进程启动新任务扫描解析其它已安装的应用之后,结束嵌入式系统的启动。这样,通过分阶段的完成嵌入式系统的启动,可以使得用户可以更快的使用核心应用,提高了嵌入式系统的启动速度和用户体验。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例一的嵌入式系统启动方法的流程示意图;
图2a、2b为本发明实施例一的智能终端的结构示意图;
图3为本发明实施例二的嵌入式系统启动方法的流程示意图;
图4a、4b为本发明实施例二的智能终端的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(PersonalCommunicationsService,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(PersonalDigitalAssistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(GlobalPositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(MobileInternetDevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本发明的发明人发现,现有智能电视的启动速度慢的主要原因在于:Zygote(用户进程孵化器)创建后以单任务循环顺序加载嵌入式系统中所有预加载类。而实际应用中,Zygote加载完预加载类之后,SystemServer才能进行后续的操作来完成嵌入式系统的启动。因此,预加载类的加载速度限制了嵌入式系统的启动速度。
进一步地,本发明的发明人还发现,在现有的嵌入式系统启动方法中,SystemServer(系统服务进程)创建后单任务循环顺序对嵌入式系统中已安装的应用进行扫描解析,在扫描解析所有已安装的应用之后进行Launcher(应用启动器)的启动。
而实际应用中,在启动Launcher中把嵌入式系统中已经安装好的应用程序以快捷图标的形式展示在桌面之后,嵌入式系统才算启动完成,此时嵌入式系统可用,用户可以使用这些已完成扫描解析的应用程序。而现有的嵌入式系统启动方法中,在嵌入式系统中已安装的应用没有完全扫描解析的情况下,嵌入式系统也就无法正常使用。因此,嵌入式系统中已安装的应用的扫描解析的速度也会限制嵌入式系统的启动速度。
因此,本发明的发明人考虑,可以根据嵌入式系统CPU(CentralProcessingUnit,中央处理器)的核数,将嵌入式系统所需要的预加载类划分为与CPU的核数相应数量的组;之后,根据核数,启动相应数量的任务来同时加载各组中的预加载类。这样,以并行的方式加载预加载类,相比现有单任务循环顺序加载的方式,可以提高预加载类的加载速度,从而提高嵌入式系统的启动速度。
进一步地,本发明的发明人考虑,可以预先从嵌入式系统中已安装的应用程序中划分出能够满足用户基本操作需要的核心应用。之后,嵌入式系统中的SystemServer(系统服务进程)分为两个阶段对嵌入式系统中已安装的应用进行扫描解析。
在第一阶段加载核心应用,并在扫描解析完核心应用之后,启动嵌入式系统中的Launcher(应用启动器),此时,嵌入式系统处于可用状态,用户可以使用上述核心应用,无需等待所有已安装的应用完成扫描解析。
而针对核心应用以外的其他已安装的应用,可以在启动Launcher之后的同时,继续扫描解析其它已安装的应用,以此完成嵌入式系统的全部启动。相比现有单任务循环顺序对嵌入式系统中已安装的应用进行扫描解析的方法,将嵌入式系统中已安装的应用分为两个阶段进行扫描解析,并在扫描解析完核心应用之后启动Launcher,使得用户无需等待所有应用完成扫描解析即可使用核心应用来进行基本操作,提高了嵌入式系统的启动速度。
下面将结合附图通过如下两个实施例来详细说明本发明的技术方案。
实施例一
本发明实施例一提供了一种嵌入式系统启动方法,其具体流程如图1所示,包括如下步骤:
S101:创建Zygote进程后,获取中央处理器的核数;根据获取的核数,将所有预加载类分为相应数量的组。
实际应用中,本发明实施例一提供的嵌入式系统的启动方法,其在创建Zygote(孵化器)进程之前,需要进行系统上电、系统引导程序、启动内核(Kernel)、以及创建初始化进程(Init)。之后,可以通过创建的初始化进程来创建Zygote进程。实际应用中,通过初始化进程还可以创建Runtime(系统运行所需软件库)、以及Daemon(守护进程)。
本发明实施例一中,Zygote进程在创建之后,可以创建VM(VirtualMemory,虚拟存储器),并且在创建的VM启动时赋予各种参数。比如,一般情况下一个应用程序加载的内存不能超过16mb,因此,通过Zygote进程可以设置heapsize参数为16mb来。其中,heapsize参数表示单个进程可用的最大内存。
Zygote进程创建并启动VM虚拟机之后,可以为java的类注册JNI(JavaNativeInterface,Java本地接口)函数,以便Zygote进程能够调用Java代码。进而加载嵌入式系统所需的java类以及一些嵌入式系统资源。实际应用中,嵌入式系统所需的预加载类往往具有一千多个,并且存在大量的加载时间超过1250微秒的预加载类。若按照现有单任务循环顺序加载这些预加载类,将会耗费大量的时间,严重影响嵌入式系统的启动时间。
而本发明的发明人发现,实际应用中,随着多核技术的发展,目前的智能终端可以在一枚处理器中集成两个或多个完整的计算引擎(内核)。因此,本发明的发明人考虑可以通过划分任务,使得线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。
具体地,本发明实施例一中,创建Zygote进程后,可以在加载预加载类之前,先获取中央处理器的核数。
实际应用中,可以通过读取系统文件cat/proc/cpuinfo,过滤其中的processor字段,以此获取CPU的核数。例如,如果嵌入系统中有两个核,则通过上述方法过滤过得到的结果将为:
processor:0
processor:1
在获取中央处理器的核数之后,智能终端可以根据获取的核数,将嵌入式系统所需的所有预加载类分为相应数量的组。例如,在中央处理器的核数具体为4个的情况下,可以将嵌入式系统所需的所有预加载类分为4个组。
本发明实施例一中,考虑到嵌入式系统所需的预加载类中存在一些相互依赖或影响的预加载类。因此,为了避免预加载类之间的相互影响,可以按照如下规则来进行预加载类的分组:各组中的预加载类不依赖于其它组的预加载类。
例如,预加载的类A与类B之间存在依赖关系,如果要加载类A必须加载类B。因此,需要将类A和类B放到同一分组,这样,就会产生某一个分组产生阻塞现象。
S102:根据获取的核数,通过Zygote进程启动相应数量的任务,分别加载各组的预加载类。
实际应用中,智能终端中央处理器的各个内核可以分别执行任务。因此,为了提高嵌入式系统中所需的预加载类的加载速度,可以根据智能终端的中央处理器的核数,通过Zygote进程启动相应数量的任务,由启动的各个任务分别加载各组的预加载类。
例如,在中央处理器的核数为4个的情况下,可以通过Zygote进程启动4个任务。由于在中央处理器的核数为4个的情况下,通过步骤S101可以得到4个组的预加载类。因此,在通过Zygote进程启动4个任务之后,可以为每个任务分配对应的组,并由该任务来加载该组的预加载类。
这样,通过多任务同时来加载嵌入式系统所需的预加载类,相比现有单任务循环的方式来加载预加载类,大大减少了预加载类的加载时间,从而有利于提高嵌入式系统的启动速度。
S103:加载完所有的预加载类后,启动嵌入式系统的Launcher。
本发明实施例一中,智能终端通过步骤S102加载完嵌入系统所需的所有预加载类之后,可以进一步地通过Zygote进程创建嵌入式系统的系统服务SystemServer进程。之后,由创建的SystemServer进程所启动的ActivityManagerService(活动管理器服务)来启动嵌入式系统的Launcher(应用启动器)。
实际应用中,ActivityManagerService和PackageManagerService(应用程序管理服务)一样,都是在嵌入式系统启动时由SystemServer(系统服务)进程启动的。
具体地,SystemServer进程首先是启动PackageManagerService,并由PackageManagerService来负责安装嵌入式系统的应用程序。嵌入式系统中的应用程序安装好了以后,SystemServer进程接下来就要通过ActivityManagerService来启动应用程序Launcher了。
进而,Launcher在启动的时候可以通过PackageManagerService把嵌入式系统中已经安装好的应用程序以快捷图标的形式展示在智能终端的桌面上,就完成了嵌入式系统的启动,这样用户就可以使用这些应用程序了。
实际应用中,PackageManagerService可以通过如下方法来负责安装嵌入式系统的应用程序:
PackageManagerService扫描嵌入式系统中特定的目录,从中找出应用程序文件(比如,以Apk为后缀的文件);然后,PackageManagerService对查找出的应用程序文件进行解析,得到应用程序的相关信息;基于得到的应用程序的相关信息,完成应用程序的安装过程。
本发明实施例一中,在通过上述步骤S102加载完所有的预加载类后,可以采用本领域技术人员常用的技术手段来扫描解析嵌入式系统中已安装的应用并完成后续Launcher的启动过程,以此完成嵌入式系统的启动。
更优地,本发明实施例一中,为了进一步提高嵌入式系统的启动速度,在通过Zygote进程创建嵌入式系统的SystemServer进程之后,可以通过如下方式来扫描解析嵌入式系统中已安装的应用并完成Launcher的启动过程:
通过SystemServer进程扫描解析预定义的核心应用;核心应用的解析任务完成后,由SystemServer进程广播第一消息M1;智能终端接收到第一消息M1后,启动Launcher。
具体地,可以预先从嵌入式系统中已安装的应用中定义满足用户基本操作需要、以及嵌入式系统启动所必须加载的应用为核心应用。
例如,预定义的核心应用可以包括:Launcher、SystemUI(SystemUserInterface,系统用户界面)、LiveTV(LiveTelevision,直播电视)、VOD(VideoonDemand,视频点播)等等用户主要或必须使用的应用。
进而,智能终端通过SystemServer进程启动PackageManagerService之后,由PackageManagerService扫描嵌入式系统中特定的目录,从中找出核心应用对应的应用程序文件;然后,PackageManagerService对查找出的核心应用的应用程序文件进解析,得到核心应用的应用程序的相关信息;基于得到的核心应用的应用程序的相关信息,完成核心应用的解析任务。
本发明实施例一中,在核心应用的解析任务完成后,由SystemServer进程广播第一消息M1。
实际应用中,第一消息M1可以由本领域技术人员进行设置,比如,将第一消息M1设置为BOOT_COMPLETED_TMP。
第一消息M1发出后,智能终端可以通过SystemServer进程启动ActivityManagerService,并通过ActivityManagerService启动Launcher。进而,Launcher在启动的时候可以通过PackageManagerService把嵌入式系统中已完成扫描解析的核心应用以快捷图标的形式展示在智能终端的桌面上,使得嵌入式系统启动成功。这样,用户在看到嵌入式系统启动成功后,就可以使用已经完成扫描解析的核心应用,无需等待所有已安装的应用完成扫描解析。
为了实现嵌入式系统的完整启动,本发明实施例一中,智能终端在接收到第一消息M1之后,除了启动Launcher,还可以通过SystemServer进程启动新任务扫描解析其它已安装的应用。
具体地,通过SystemServer进程所启动的PackageManagerService对嵌入式系统中除了核心应用以外的其它已安装的应用进行扫描解析。其它已安装的应用的扫描解析过程与核心应用的扫描解析过程可以相同。
其它已安装的应用的解析任务完成后,由SystemServer进程广播第二消息M2;智能终端接收到第二消息M2后,结束嵌入式系统的启动。其中,第二消息M1为嵌入式系统标准的启动完成的消息,通常为BOOT_COMPLETED。
实际应用中,接收到第二消息M2后,可以把嵌入式系统中已完成扫描解析的其它已安装的应用以快捷图标的形式展示在智能终端的桌面上,结束嵌入式系统的启动。
基于上述实施例一提供的嵌入式系统启动方法,本发明实施例一还提供了一种智能终端,如图2a所示,包括:预加载类分组模块201、预加载类加载模块202、系统启动模块203。
其中,预加载类分组模块201用于在智能终端中嵌入式系统的Zygote进程创建之后,获取中央处理器的核数;并根据中央处理器的核数,将所有预加载类分为相应数量的组。
其中,各组中的预加载类不依赖于其它组的预加载类。
预加载类加载模块202用于根据中央处理器的核数,通过Zygote进程启动相应数量的任务,分别加载各组的预加载类。
系统启动模块203用于在预加载类加载模块加载完所有的预加载类后,启动嵌入式系统的Launcher。
实际应用中,智能终端可以包括:预启动模块。
预启动模块用于在孵化器Zygote进程创建之前,进行系统上电、系统引导程序、启动内核、以及创建初始化进程;通过创建的初始化进程来创建Zygote进程。
更优地,如图2b所示,智能终端中除了包括:预加载类分组模块201、预加载类加载模块202、系统启动模块203,还可以进一步包括:用于通过Zygote进程创建SystemServer进程的系统服务进程创建模块204。
进一步地,智能终端中还可以包括:核心应用扫描解析模块205。
核心应用扫描解析模块205用于通过SystemServer进程扫描解析预定义的核心应用;核心应用的解析任务完成后,由SystemServer进程广播第一消息。
相应地,系统启动模块203接收到第一消息后,启动Launcher。
进一步地,核心应用扫描解析模块205还用于通过SystemServer进程启动新任务扫描解析其它已安装的应用;其它已安装的应用的解析任务完成后,由SystemServer进程广播第二消息。
相应地,系统启动模块205接收到第二消息后,结束智能终端中嵌入式系统的启动。
本发明实施例一中的图2a、2b所示的智能终端中的各个模块的具体功能实现可以参考实施例一提供的嵌入式系统启动方法中各个步骤的具体实现,在此不再赘述。
相比现有单任务循环顺序对嵌入式系统中已安装的应用进行扫描解析的方法,本发明实施例一中将嵌入式系统中已安装的应用分为两个阶段进行扫描解析,并在扫描解析完核心应用之后启动Launcher,使得用户无需等待所有应用完成扫描解析即可使用核心应用来进行基本操作,提高了嵌入式系统的启动速度,从而提高用户体验。
实施例二
本发明实施例二提供了一种嵌入式系统启动方法,其具体流程如图3所示,包括如下步骤:
S301:创建SystemServer后,通过SystemServer扫描解析预定义的核心应用。
本发明实施例二的技术方案中,在创建SystemServer之前,需要进行系统上电、系统引导程序、启动内核(Kernel)、以及创建初始化进程(Init),并通过创建的初始化进程来创建Zygote进程。之后,在通过Zygote进程创建并启动VM虚拟机并为java的类注册JNI(JavaNativeInterface,Java本地接口)函数,以便Zygote进程能够调用Java代码来加载嵌入式系统所需的预加载类。在Zygote进程加载完嵌入式系统所需的预加载类之后,智能终端可以通过Zygote进程创建嵌入式系统的SystemServer进程。
其中,关于嵌入式系统所需的预加载类的加载可以采用本领域技术常用的技术手段、或者本发明实施例一提供的技术手段。
本发明实施例二中,通过Zygote进程创建SystemServer进程后,SystemServer进程可以启动ActivityManagerService和PackageManagerService。通过SystemServer进程启动的PackageManagerService来扫描解析预定义的核心应用。
其中,核心应用具体是指嵌入式系统中已安装的、满足用户基本操作需要、以及嵌入式系统启动所必须加载的应用。
例如,预定义的核心应用可以包括:Launcher、SystemUI(SystemUserInterface,系统用户界面)、LiveTV(LiveTelevision,直播电视)、VOD(VideoonDemand,视频点播)等等用户主要或必须使用的应用。
智能终端通过SystemServer进程启动PackageManagerService之后,由PackageManagerService扫描嵌入式系统中特定的目录,从中找出核心应用对应的应用程序文件;然后,PackageManagerService对查找出的核心应用的应用程序文件进解析,得到核心应用的应用程序的相关信息;基于得到的核心应用的应用程序的相关信息,完成核心应用的解析任务。
S302:核心应用的解析任务完成后,由SystemServer进程广播第一消息。
实际应用中,第一消息M1可以由本领域技术人员进行设置,比如,将第一消息M1设置为BOOT_COMPLETED_TMP。
S303:接收到第一消息后,启动嵌入式系统的Launcher。
具体地,智能终端接收到第一消息M1后,可以通过SystemServer进程启动ActivityManagerService,并通过ActivityManagerService启动Launcher。进而,Launcher在启动的时候可以通过PackageManagerService把嵌入式系统中已完成扫描解析的核心应用以快捷图标的形式展示在智能终端的桌面上,使得嵌入式系统启动成功。这样,用户在看到嵌入式系统启动成功后,就可以使用已经完成扫描解析的核心应用,无需等待所有已安装的应用完成扫描解析。
更优地,为了实现嵌入式系统的完整启动,本发明实施例二中提供的嵌入式系统启动方法还包括如下步骤:
S304:通过SystemServer进程启动新任务扫描解析其它已安装的应用。
本发明实施例二中,智能终端在接收到第一消息M1之后,除了启动Launcher,还可以通过SystemServer进程启动新任务扫描解析其它已安装的应用。
具体地,智能终端可以通过SystemServer进程所启动的PackageManagerService对嵌入式系统中除了核心应用以外的其它已安装的应用进行扫描解析。
S305:其它已安装的应用的解析任务完成后,由SystemServer进程广播第二消息。
具体地,通过步骤S204完成核心应用以外的其它已安装的应用的解析任务之后,由SystemServer进程广播第二消息M2。其中,第二消息M1为嵌入式系统标准的启动完成的消息,通常为BOOT_COMPLETED。
S306:接收到第二消息后,结束嵌入式系统的启动。
具体地,智能终端接收到第二消息M2后,可以把嵌入式系统中已完成扫描解析的其它已安装的应用以快捷图标的形式展示在智能终端的桌面上,结束嵌入式系统的启动。
基于上述实施例二提供的嵌入式系统启动方法,本发明实施例二还提供的一种智能终端,如图4a所示,包括:核心应用扫描解析模块401、系统启动模块402。
其中,核心应用扫描解析模块401用于通过智能终端中嵌入式系统的SystemServer进程扫描解析预定义的核心应用。核心应用的解析任务完成后,由SystemServer进程广播第一消息。
系统启动模块402用于接收到第一消息后,启动嵌入式系统的Launcher。
核心应用扫描解析模块401还用于通过SystemServer进程启动新任务扫描解析其它已安装的应用;其它已安装的应用的解析任务完成后,由SystemServer进程广播第二消息。
相应地,系统启动模块402还用于接收到第二消息后,结束嵌入式系统的启动。
进一步地,本发明实施例二提供的一种智能终端,如图4b所示,除了可以包括:核心应用扫描解析模块401、系统启动模块402,还可以包括:预加载类分组模块403、预加载类加载模块404、以及系统服务创建模块405。
其中,预加载类分组模块403用于在智能终端中嵌入式系统的Zygote进程创建之后,获取中央处理器的核数;并根据核数,将所有预加载类分为相应数量的组。
其中,各组中的预加载类不依赖于其它组的预加载类。
预加载类加载模块404用于根据中央处理器的核数,通过Zygote进程启动相应数量的任务,分别加载各组的预加载类。
系统服务创建模块405用于在预加载类加载模块加载完所有的预加载类后,通过Zygote进程创建嵌入式系统的SystemServer进程。
本发明实施例二中图4a、4b所示的智能终端中的各个模块的具体功能实现可以参考实施例二提供的嵌入式系统启动方法中各个步骤的具体实现,在此不再赘述。
相比现有单任务循环顺序对嵌入式系统中已安装的应用进行扫描解析的方法,本发明实施例二的技术方案中,将嵌入式系统中已安装的应用分为两个阶段进行扫描解析,并在扫描解析完核心应用之后启动Launcher,使得用户无需等待所有应用完成扫描解析即可使用核心应用来进行基本操作,提高了嵌入式系统的启动速度。
综上,本发明的方案中,根据中央处理器的核数,将所有预加载类分为相应数量的组,并通过Zygote进程启动相应数量的任务,分别加载各组的预加载类。这样,通过多任务同时来加载嵌入式系统所需的预加载类,相比现有单任务循环的方式来加载预加载类,大大减少了预加载类的加载时间,从而有利于提高嵌入式系统的启动速度,进而提高用户体验。
而且,本发明的方案中,预先定义核心应用,并通过SystemServer进程优先扫描解析预定义的核心应用,在核心应用的解析任务完成后,启动嵌入式系统的Launcher,使得嵌入式系统启动成功。之后,通过SystemServer进程启动新任务扫描解析其它已安装的应用之后,结束嵌入式系统的启动。这样,通过分阶段的完成嵌入式系统的启动,可以使得用户可以更快的使用核心应用,提高用户体验。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-OnlyMemory,只读存储器)、RAM(RandomAccessMemory,随即存储器)、EPROM(ErasableProgrammableRead-OnlyMemory,可擦写可编程只读存储器)、EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种嵌入式系统启动方法,其特征在于,包括:
创建孵化器Zygote进程后,获取中央处理器的核数;
根据所述核数,将所有预加载类分为相应数量的组;其中,各组中的预加载类不依赖于其它组的预加载类;
根据所述核数,通过所述Zygote进程启动相应数量的任务,分别加载各组的预加载类;
加载完所有的预加载类后,启动所述嵌入式系统的应用启动器Launcher。
2.根据权利要求1所述的方法,其特征在于,所述加载完所有的预加载类之后,还包括:
通过所述Zygote进程创建所述嵌入式系统的系统服务SystemServer进程。
3.根据权利要求2所述的方法,其特征在于,所述启动所述嵌入式系统的应用启动器Launcher之前,还包括:
通过所述SystemServer进程扫描解析预定义的核心应用;
所述核心应用的解析任务完成后,由所述SystemServer进程广播第一消息;以及
所述启动应用启动器Launcher,具体包括:
接收到所述第一消息后,启动所述Launcher。
4.根据权利要求3所述的方法,其特征在于,所述接收到第一消息之后,还包括:
通过所述SystemServer进程启动新任务扫描解析其它已安装的应用;
其它已安装的应用的解析任务完成后,由所述SystemServer进程广播第二消息;
接收到第二消息后,结束所述嵌入式系统的启动。
5.根据权利要求1-4任一所述的方法,其特征在于,所述创建孵化器Zygote进程之前,还包括:
系统上电、系统引导程序、启动内核、以及创建初始化进程;以及
所述创建孵化器Zygote进程,具体包括:
通过创建的初始化进程来创建Zygote进程。
6.一种智能终端,其特征在于,包括:
预加载类分组模块,用于在所述智能终端中嵌入式系统的Zygote进程创建之后,获取中央处理器的核数;并根据所述核数,将所有预加载类分为相应数量的组;其中,各组中的预加载类不依赖于其它组的预加载类;
预加载类加载模块,用于根据中央处理器的核数,通过所述Zygote进程启动相应数量的任务,分别加载各组的预加载类;
系统启动模块,用于在所述预加载类加载模块加载完所有的预加载类后,启动所述嵌入式系统的Launcher。
7.根据权利要求6所述的智能终端,其特征在于,还包括:
系统服务进程创建模块,用于通过所述Zygote进程创建SystemServer进程。
8.根据权利要求7所述的智能终端,其特征在于,还包括:
核心应用扫描解析模块,用于通过所述SystemServer进程扫描解析预定义的核心应用;所述核心应用的解析任务完成后,所述SystemServer进程广播第一消息;以及
所述系统启动模块具体用于接收到所述第一消息后,启动所述Launcher。
9.根据权利要求8所述的智能终端,其特征在于,
所述核心应用扫描解析模块还用于通过所述SystemServer进程启动新任务扫描解析其它已安装的应用;其它已安装的应用的解析任务完成后,由所述SystemServer进程广播第二消息;以及
所述系统启动模块还用于接收到所述第二消息后,结束所述嵌入式系统的启动。
10.根据权利要求6-9任一所述的智能终端,其特征在于,还包括:
预启动模块,用于在孵化器Zygote进程创建之前,进行系统上电、系统引导程序、启动内核、以及创建初始化进程;通过创建的初始化进程来创建Zygote进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510874059.8A CN105511874A (zh) | 2015-12-02 | 2015-12-02 | 嵌入式系统启动方法和智能终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510874059.8A CN105511874A (zh) | 2015-12-02 | 2015-12-02 | 嵌入式系统启动方法和智能终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105511874A true CN105511874A (zh) | 2016-04-20 |
Family
ID=55719884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510874059.8A Pending CN105511874A (zh) | 2015-12-02 | 2015-12-02 | 嵌入式系统启动方法和智能终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105511874A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105549958A (zh) * | 2015-12-02 | 2016-05-04 | 海信集团有限公司 | 嵌入式系统启动方法和智能终端 |
CN106095499A (zh) * | 2016-06-07 | 2016-11-09 | 青岛海信电器股份有限公司 | 嵌入式系统启动优化方法及装置 |
CN106648773A (zh) * | 2016-12-16 | 2017-05-10 | 四川长虹电器股份有限公司 | 一种基于Android系统实现快速开机的方法 |
CN107220055A (zh) * | 2017-05-26 | 2017-09-29 | 上海展扬通信技术有限公司 | 用于终端启动的方法、系统及终端 |
CN107450958A (zh) * | 2017-08-20 | 2017-12-08 | 长沙曙通信息科技有限公司 | 一种桌面虚拟化智能管理镜像模板预加载实现方法 |
CN107704291A (zh) * | 2017-10-17 | 2018-02-16 | 安徽天鹅科技实业(集团)有限公司 | 一种计算机程序和最近文档预启动方法 |
CN108415735A (zh) * | 2018-02-01 | 2018-08-17 | 天津麒麟信息技术有限公司 | 一种Web浏览器快速启动方法 |
CN109460262A (zh) * | 2018-11-15 | 2019-03-12 | 深圳市网心科技有限公司 | 验证主系统镜像合法性的方法、系统、安卓设备及介质 |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
CN110058890A (zh) * | 2019-02-28 | 2019-07-26 | 努比亚技术有限公司 | 一种安卓系统启动方法、终端及计算机可读存储介质 |
CN114519582A (zh) * | 2022-02-21 | 2022-05-20 | 中国邮政储蓄银行股份有限公司 | 服务的预热方法、预热装置和服务系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793249A (zh) * | 2014-01-24 | 2014-05-14 | 北京航空航天大学 | 一种Java虚拟机中类库的多线程预加载方法 |
CN104252365A (zh) * | 2013-06-25 | 2014-12-31 | 上海博泰悦臻电子设备制造有限公司 | Android操作系统的快速启动方法 |
CN104375872A (zh) * | 2014-12-08 | 2015-02-25 | 福州瑞芯微电子有限公司 | 一种安卓系统实现快速开机的方法及装置 |
CN104598254A (zh) * | 2015-02-17 | 2015-05-06 | 福州瑞芯微电子有限公司 | 一种安卓系统快速开机的方法及装置 |
CN105549958A (zh) * | 2015-12-02 | 2016-05-04 | 海信集团有限公司 | 嵌入式系统启动方法和智能终端 |
-
2015
- 2015-12-02 CN CN201510874059.8A patent/CN105511874A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252365A (zh) * | 2013-06-25 | 2014-12-31 | 上海博泰悦臻电子设备制造有限公司 | Android操作系统的快速启动方法 |
CN103793249A (zh) * | 2014-01-24 | 2014-05-14 | 北京航空航天大学 | 一种Java虚拟机中类库的多线程预加载方法 |
CN104375872A (zh) * | 2014-12-08 | 2015-02-25 | 福州瑞芯微电子有限公司 | 一种安卓系统实现快速开机的方法及装置 |
CN104598254A (zh) * | 2015-02-17 | 2015-05-06 | 福州瑞芯微电子有限公司 | 一种安卓系统快速开机的方法及装置 |
CN105549958A (zh) * | 2015-12-02 | 2016-05-04 | 海信集团有限公司 | 嵌入式系统启动方法和智能终端 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105549958A (zh) * | 2015-12-02 | 2016-05-04 | 海信集团有限公司 | 嵌入式系统启动方法和智能终端 |
CN106095499A (zh) * | 2016-06-07 | 2016-11-09 | 青岛海信电器股份有限公司 | 嵌入式系统启动优化方法及装置 |
CN106648773A (zh) * | 2016-12-16 | 2017-05-10 | 四川长虹电器股份有限公司 | 一种基于Android系统实现快速开机的方法 |
CN107220055B (zh) * | 2017-05-26 | 2024-03-29 | 上海传英信息技术有限公司 | 用于终端启动的方法、系统及终端 |
CN107220055A (zh) * | 2017-05-26 | 2017-09-29 | 上海展扬通信技术有限公司 | 用于终端启动的方法、系统及终端 |
CN107450958A (zh) * | 2017-08-20 | 2017-12-08 | 长沙曙通信息科技有限公司 | 一种桌面虚拟化智能管理镜像模板预加载实现方法 |
CN107704291A (zh) * | 2017-10-17 | 2018-02-16 | 安徽天鹅科技实业(集团)有限公司 | 一种计算机程序和最近文档预启动方法 |
CN108415735A (zh) * | 2018-02-01 | 2018-08-17 | 天津麒麟信息技术有限公司 | 一种Web浏览器快速启动方法 |
CN109460262B (zh) * | 2018-11-15 | 2021-12-03 | 深圳市网心科技有限公司 | 验证主系统镜像合法性的方法、系统、安卓设备及介质 |
CN109460262A (zh) * | 2018-11-15 | 2019-03-12 | 深圳市网心科技有限公司 | 验证主系统镜像合法性的方法、系统、安卓设备及介质 |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
CN110058890A (zh) * | 2019-02-28 | 2019-07-26 | 努比亚技术有限公司 | 一种安卓系统启动方法、终端及计算机可读存储介质 |
CN114519582A (zh) * | 2022-02-21 | 2022-05-20 | 中国邮政储蓄银行股份有限公司 | 服务的预热方法、预热装置和服务系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105511874A (zh) | 嵌入式系统启动方法和智能终端 | |
CN105549958A (zh) | 嵌入式系统启动方法和智能终端 | |
CN106095499A (zh) | 嵌入式系统启动优化方法及装置 | |
CN103136342B (zh) | 应用程序app的搜索方法、系统以及搜索服务器 | |
US11310066B2 (en) | Method and apparatus for pushing information | |
CN110377369B (zh) | 一种运行小程序的方法、设备和计算机存储介质 | |
CN105653335A (zh) | 一种插件程序的控制方法和装置 | |
US20190310882A1 (en) | Multiple application instances in operating systems that utilize a single process for application execution | |
CN110968331A (zh) | 应用程序运行的方法和装置 | |
CN109933381A (zh) | 一种内核的加载方法及装置 | |
CN111427594A (zh) | 应用程序运行方法及装置 | |
CN104050001A (zh) | 基于Android系统的资源处理方法、装置和设备 | |
CN105573910A (zh) | 受保护系统的应用程序调试方法及智能终端 | |
CN111352823A (zh) | 一种测试方法及客户端、存储介质 | |
CN111475230B (zh) | 应用的功能配置方法、装置和电子设备 | |
CN111538530A (zh) | 页面跳转方法及系统、存储介质及电子设备 | |
CN110704099A (zh) | 联盟链的构建方法、装置和电子设备 | |
CN114090090B (zh) | 终端固件的启动方法、装置、电子设备及存储介质 | |
CN110806967A (zh) | 一种单元测试方法和装置 | |
CN111464429B (zh) | 微信小程序多项目兼容共享方法、系统、存储介质及设备 | |
CN112685071A (zh) | 应用程序修复方法、装置、设备及存储介质 | |
CN104809021A (zh) | 多重作业环境服务的管理系统及管理方法 | |
CN105528226A (zh) | 一种智能终端的开机方法和装置 | |
CN113515299A (zh) | 软件开发工具包sdk热升级方法、装置、设备及存储介质 | |
CN113760382B (zh) | 一种插件启动方法、装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160420 |
|
RJ01 | Rejection of invention patent application after publication |