CN106792185A - 开机方法、开机装置及Android智能设备 - Google Patents
开机方法、开机装置及Android智能设备 Download PDFInfo
- Publication number
- CN106792185A CN106792185A CN201611036746.3A CN201611036746A CN106792185A CN 106792185 A CN106792185 A CN 106792185A CN 201611036746 A CN201611036746 A CN 201611036746A CN 106792185 A CN106792185 A CN 106792185A
- Authority
- CN
- China
- Prior art keywords
- broadcast
- boot
- self
- priority
- service
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4432—Powering on the client, e.g. bootstrap loading using setup parameters being stored locally or received from the server
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种开机方法、开机装置及Android智能设备,在开机过程中由Zygote进程创建的SystemServer进程中启动ActivityManagerService,由ActivityManagerService在FinishBooting函数或其他进程中发送自定义BOOT_P0广播,以启动第一优先级的***服务或***应用,在自定义BOOT_P0广播发出预设时间之后,发送自定义BOOT_P1广播,以启动优先级仅次于自定义BOOT_P0广播启动的***服务或应用,在自定义BOOT_P1广播发出预设时间之后,发送启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,根据需要启动的***服务的多少,还可以增加自定义BOOT_P广播,以在开机过程中,将要启动的应用或服务按照优先级的顺序先后进行启动,避免了众多应用或服务集中于同一时刻启动,占用CPU造成的***卡顿,减轻了***负担,提高了***运行的流畅性。
Description
技术领域
本发明涉及智能设备技术领域,尤其涉及一种开机方法、开机装置及Android智能设备。
背景技术
随着采用Android***的Android电视的飞速发展,越来越多的电视应用应运而生。娱乐电视已经成为一种趋势,因此电视体验显得尤为重要,众多电视应用(包括第三方应用)为了提升产品自身的体验性,都会采取开机启动某些服务的方式,后台监听用户的操作,提供实时响应,来提升用户的好感度。由于有些服务是在Init.rc里面启动的,而此时应用开机启动的方式一般都是采取监听***开机广播ACTION_BOOT_COMPLETED,这样一来在开机过程中,众多应用在集中的时间启动,CPU占用相当高,很容易引起***卡顿。
发明内容
本发明的主要目的在于提供一种开机方法,旨在解决开机过程中众多应用集中启动,CPU占用率过高造成***卡顿的技术问题。
为实现上述目的,本发明提出一种开机方法,包括以下步骤:
在Zygote创建的SystemServer进程中启动ActivityManagerService;
ActivityManagerService发送用于启动第一优先级***服务或***应用的自定义BOOT_P0广播;
在所述自定义BOOT_P0广播发出后的预设时间之后,发送用于启动第二优先级***服务或***应用的自定义BOOT_P1广播;
在所述自定义BOOT_P1广播发出后的预设时间之后,发送用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播。
进一步地,所述在所述自定义BOOT_P1广播发出预设时间之后,发送用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播的步骤之后,还包括:
所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动。
进一步地,所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动的步骤包括:
分别用数组保存每一第三方应用和/或第三优先级***服务的结构体,形成receivers队列;
依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked在receivers队列中进行优先级排序;
实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息;
依据更新后的数组信息调整第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序。
进一步地,所述结构体的元素包括用户使用频率、开机绝对时间、Activity名称及用户使用时间。
进一步地,所述预设时间的预设过程包括以下步骤:
检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量;
根据智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔。
本发明的另一目的在于提供一种开机装置,该开机装置包括:
ActivityManagerService启动模块,在Zygote创建的SystemServer进程中启动ActivityManagerService;
自定义BOOT_P0广播发送模块,利用ActivityManagerService发送用于启动第一优先级***服务或***应用的自定义BOOT_P0广播;
自定义BOOT_P1广播发送模块,在所述自定义BOOT_P0广播发出预设时间之后,发送用于启动第二优先级***服务或***应用的自定义BOOT_P1广播;及
源生ACTION_BOOT_COMPLETED广播发送模块,在所述自定义BOOT_P1广播发出预设时间之后,发送用于启动第三方应用或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播。
进一步地,该优化装置还包括:
源生ACTION_BOOT_COMPLETED广播接收模块,控制所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动。
进一步地,所述源生ACTION_BOOT_COMPLETED广播接收模块包括:
receivers队列形成单元,分别用数组保存每一第三方应用和/或第三优先级***服务的结构体,形成receivers队列;
优先级排序单元,依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked在receivers队列中进行优先级排序;
数组信息更新单元,实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息;及
优先级顺序调整单元,依据更新后的数组信息调整第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序。
进一步地,所述结构体的元素包括用户使用频率、开机绝对时间、Activity名称及用户使用时间。
进一步地,该开机装置还包括:
检测模块,检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量;及
调试模块,根据智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔。
本发明还提供一种Android智能设备,该Android智能设备包括如上所述的开机装置。
本发明的开机方法,在开机过程中由Zygote进程创建的SystemServer进程中启动ActivityManagerService,由ActivityManagerService在FinishBooting函数或其他进程中发送自定义BOOT_P0广播,以启动第一优先级的***服务或***应用,在自定义BOOT_P0广播发出预设时间之后,发送自定义BOOT_P1广播,以启动优先级仅次于自定义BOOT_P0广播启动的***服务或应用,在自定义BOOT_P1广播发出预设时间之后,发送启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,根据需要启动的***服务的多少,还可以增加自定义BOOT_P广播,以在开机过程中,将要启动的应用或服务按照优先级的顺序先后进行启动,避免了众多应用或服务集中于同一时刻启动,占用CPU造成的***卡顿,减轻了***负担,提高了***运行的流畅性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明开机方法一实施例的流程图;
图2为图1中步骤S50的具体流程图;
图3为本发明中预设时间的预设过程一实施例的流程图;
图4为本发明开机装置一实施例的功能模块图;
图5为图4中源生ACTION_BOOT_COMPLETED广播接收模块的结构示意图。
附图标号说明:
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种开机方法,应用于智能设备。
参照图1,图1为本发明开机方法一实施例的流程图,在本实施例中,该开机方法包括以下步骤:
S10:在Zygote创建的SystemServer进程中启动ActivityManagerService;
S20:ActivityManagerService发送用于启动第一优先级***服务或***应用的自定义BOOT_P0广播;
S30:在所述自定义BOOT_P0广播发出后的预设时间之后,发送用于启动第二优先级***服务或***应用的自定义BOOT_P1广播;
S40:在所述自定义BOOT_P1广播发出后的预设时间之后,发送用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播;
S50:所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动。
本实施例的开机方法,主要用于对基于Android平台的智能设备的开机启动过程进行优化,在开机启动过程中,首先由Zygote进程创建SystemServer进程,由SystemServer进程启动关键的Service,也即ActivityManagerService,在正常启动的情况下ActivityManagerService会在FinishBooting函数中发送BOOT_COMPLETED广播,或者由ActivityManagerService在其他函数中启动FinishBooting函数发送BOOT_COMPLETED广播,或者由ActivityManagerService在其他进程中发送BOOT_COMPLETED广播,然后所有的第三方应用或***服务均会接收该BOOT_COMPLETED广播进行开机启动,这样会造成***卡顿,运行不畅,本发明的关键点就在于将ActivityManagerService发送的BOOT_COMPLETED广播替换为用于启动***开机运行必需的***服务的自定义BOOT_P广播,所述自定义BOOT_P广播根据对应的启动服务自定义编写,对应所要启动的***服务,根据***服务默认的优先级将启动第一优先级***服务或***应用0的自定义广播命名为BOOT_P0,将启动第二优先级***服务或***应用1的自定义广播命名为BOOT_P1,根据需要可以对优先级次于Service1的Service2设定启动的自定义广播BOOT_P2,自定义BOOT_P1广播的发送时间在自定义BOOT_P0广播发出预设时间之后,所述预设时间视开机启动过程中每一自定义广播启动服务的多少及***硬件的配置进行自行定义,一般定义为1秒,若***硬件配置较差,或者自定义广播启动的服务太多,则预设时间会多于1秒,若***硬件配置较差,或者自定义广播启动的服务较少,则预设时间会少于1秒,若Service0占用CPU的比例较大,则距离发送自定义BOOT_P1广播的间隔就较长,反之则时间间隔较短。
在***开机必需的***服务启动之后,FinishBooting函数或FinishBooting函数的启动函数启动FinishBooting函数或其他进程会发出用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,第三方应用和/或第三优先级***服务会接收所述源生ACTION_BOOT_COMPLETED广播进行启动,第三方应用和/或第三优先级***服务在启动过程中,为了避免集中启动造成***卡顿,也会在内部给需要启动的第三方应用和/或第三优先级***服务一个优先级排序,也即将所有需要开机启动的第三方应用和/或第三优先级***服务在receivers队列中进行优先级排序,然后依据每一第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序接收源生ACTION_BOOT_COMPLETED广播进行启动,避免了所有第三方应用和/或第三优先级***服务同时启动,占用CPU造成***卡顿的问题。
本实施例的开机方法,在开机过程中由Zygote进程创建的SystemServer进程中启动ActivityManagerService,由ActivityManagerService在FinishBooting函数或FinishBooting函数的启动函数启动FinishBooting函数或其他进程中发送自定义BOOT_P0广播,以启动第一优先级的***服务或***应用,在自定义BOOT_P0广播发出预设时间之后,发送自定义BOOT_P1广播,以启动优先级仅次于自定义BOOT_P0广播启动的***服务或***应用,在自定义BOOT_P1广播发出预设时间之后,发送启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,根据需要启动的***服务的多少,还可以增加自定义BOOT_P广播,最后由第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播,以在开机过程中,将要启动的应用或服务按照优先级的顺序先后进行启动,避免了众多应用或服务集中于同一时刻启动,占用CPU造成的***卡顿,减轻了***负担,提高了***运行的流畅性。
参照图2,步骤S50包括:
S51:分别用数组保存每一第三方应用和/或第三优先级***服务的结构体,形成receivers队列;
S52:依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked在receivers队列中进行优先级排序;
S53:实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息;
S54:依据更新后的数组信息调整第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序。
本实施例的开机方法,第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播时,首先分别用数组保存每一个第三方应用和/或第三优先级***服务的结构体,所述结构体包括该第三方应用和/或第三优先级***服务的开机绝对时间,Activity名称,用户使用该第三方应用和/或第三优先级***服务的时间及频率,上述四种信息构成每一结构体或数组的组成元素,然后每一第三方应用和/或第三优先级***服务对应的数组结合起来形成receivers队列,之后依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked算法在receivers队列中进行优先级排序,也即,将每一第三方应用和/或第三优先级***服务的用户使用频率、开机绝对时间、Activity名称、及用户使用时间等信息作为broadcastIntentLocked算法的变量,综合考虑各项标准进行优先等级排序。
由于每次开机启动时或者启动后对所述第三方应用和/或第三优先级***服务的操作不同,为了在下一次开机时在保证***流畅的前提下获得更好的用户体验,该***会实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息,对每一次针对第三方应用和/或第三优先级***服务进行的操作进行记录,然后进行数组信息的实时更新,最后根据更新后的数组信息,也即每一第三方应用和/或第三优先级***服务的用户使用频率、开机绝对时间、Activity名称、及用户使用时间,重新利用broadcastIntentLocked算法在receivers队列中进行优先级排序,以保证使用频率较高、开机绝对时间短,使用时间比较长的第三方应用和/或第三优先级***服务在下一次的启动中,最先接收FinishBooting函数发送的源生ACTION_BOOT_COMPLETED广播。
参照图3,所述预设时间的预设过程包括以下步骤:
S80:检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量;
S90:根据智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔。
本实施例中,步骤S30和S40中的预设时间进行自行定义的过程如下,首先开机***会检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播在本次开机中启动的服务数量,然后根据智能设备的硬件配置和BOOT_P0广播或自定义BOOT_P1广播在本次开机中启动的服务数量,尝试开机启动,如果视频卡顿,则在重新启动时适当延长自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔,重复调试,保证开机***的运行流畅,所述时间间隔,也即预设时间一般定义为1秒,若***硬件配置较差,或者自定义广播启动的服务太多,则预设时间会多于1秒,若***硬件配置较差,或者自定义广播启动的服务较少,则预设时间会少于1秒。
参照图4,图4为本发明开机装置一实施例的功能模块图,在本实施例中,该优化装置100包括:
ActivityManagerService启动模块10,在Zygote创建的SystemServer进程中启动ActivityManagerService;
自定义BOOT_P0广播发送模块20,利用ActivityManagerService发送用于启动第一优先级***服务或***应用的自定义BOOT_P0广播;
自定义BOOT_P1广播发送模块30,在所述自定义BOOT_P0广播发出后的预设时间之后,发送用于启动第二优先级***服务或***应用的自定义BOOT_P1广播;
源生ACTION_BOOT_COMPLETED广播发送模块40,在所述自定义BOOT_P1广播发出后的预设时间之后,发送用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播;
源生ACTION_BOOT_COMPLETED广播接收模块50,控制所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动。
本实施例的开机优化装置100,包括ActivityManagerService启动模块10、自定义BOOT_P0广播发送模块20、自定义BOOT_P1广播发送模块30、源生ACTION_BOOT_COMPLETED广播发送模块40、源生ACTION_BOOT_COMPLETED广播接收模块50。在开机启动过程中,首先由ActivityManagerService启动模块10控制Zygote进程创建SystemServer进程,由SystemServer进程启动关键的Service,也即ActivityManagerService,在正常启动的情况下ActivityManagerService会在FinishBooting函数中发送BOOT_COMPLETED广播,或者由ActivityManagerService在其他函数中启动FinishBooting函数发送BOOT_COMPLETED广播,或者由ActivityManagerService在其他进程中发送BOOT_COMPLETED广播,然后所有的第三方应用、及***服务均会接收该BOOT_COMPLETED广播进行开机启动,这样会造成***卡顿,运行不畅,本发明的关键点就在于将ActivityManagerService在FinishBooting函数或FinishBooting函数的启动函数或其他进程中发送的BOOT_COMPLETED广播替换为用于启动***开机运行必需的***服务的自定义BOOT_P广播,由自定义BOOT_P0广播发送模块20根据***服务默认的优先级针对第一优先级***服务或***应用0发送自定义BOOT_P0广播,自定义BOOT_P1广播发送模块30针对第二优先级***服务或***应用1发送自定义BOOT_P1广播,根据需要可以对优先级次于Service1的Service2设定启动的自定义广播BOOT_P2,自定义BOOT_P1广播的发送时间在自定义BOOT_P0广播发出预设时间之后,所述预设时间视开机启动过程中服务的大小进行自行定义,若Service0占用CPU的比例较大,则距离发送自定义BOOT_P1广播的间隔就较长,反之则时间间隔较短。
在***开机必需的Service启动之后,源生ACTION_BOOT_COMPLETED广播发送模块40会控制FinishBooting函数或FinishBooting函数的启动函数启动FinishBooting函数或其他进程发出用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,第三方应用和/或第三优先级***服务会接收所述源生ACTION_BOOT_COMPLETED广播进行启动,在第三方应用和/或第三优先级***服务在启动过程中,为了避免集中启动造成***卡顿,也会在内部给需要启动的第三方应用和/或第三优先级***服务一个优先级排序,也即将所有需要开机启动的第三方应用和/或第三优先级***服务在receivers队列中进行优先级排序,然后由ACTION_BOOT_COMPLETED广播接收模块50控制每一第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收源生ACTION_BOOT_COMPLETED广播进行启动,避免了所有第三方应用和/或第三优先级***服务同时启动,占用CPU造成***卡顿的问题。
本实施例的开机装置100,在开机过程中由ActivityManagerService启动模块10在Zygote创建的SystemServer进程中启动ActivityManagerService,由自定义BOOT_P0广播发送模块20利用ActivityManagerService在FinishBooting函数或FinishBooting函数的启动函数启动FinishBooting函数或其他进程中发送自定义BOOT_P0广播,以启动第一优先级的***服务或***应用,在BOOT_P0广播发出预设时间之后,由自定义BOOT_P1广播发送模块30发送自定义BOOT_P1广播,以启动优先级仅次于自定义BOOT_P0广播启动的***服务或***应用,在自定义BOOT_P1广播发出预设时间之后,由源生ACTION_BOOT_COMPLETED广播发送模块40发送启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,根据需要启动的***Service的多少,还可以增加自定义BOOT_P广播,最后由源生ACTION_BOOT_COMPLETED广播接收模块50控制所述第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播,以在开机过程中,将要启动的应用或服务按照优先级的顺序先后进行启动,避免了众多应用或服务集中于同一时刻启动,占用CPU造成的***卡顿,减轻了***负担,提高了***运行的流畅性。
参照图5,所述源生ACTION_BOOT_COMPLETED广播接收模块50包括:
receivers队列形成单元51,分别用数组保存每一第三方应用和/或第三优先级***服务的结构体,形成receivers队列;
优先级排序单元52,依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked在receivers队列中进行优先级排序;
数组信息更新单元53,实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息;
优先级顺序调整单元54,依据更新后的数组信息调整第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序。
本实施例的开机装置100,源生ACTION_BOOT_COMPLETED广播接收模块50包括receivers队列形成单元51、优先级排序单元52、数组信息更新单元53、及优先级顺序调整单元54。receivers队列形成单元51用于分别用数组保存每一个第三方应用和/或第三优先级***服务的结构体,所述结构体包括该第三方应用的开机绝对时间,Activity名称,用户使用该第三方应用和/或第三优先级***服务的时间及频率,上述四种信息构成每一结构体或数组的组成元素,然后每一第三方应用和/或第三优先级***服务对应的数组结合起来形成receivers队列优先级排序单元52依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked算法在receivers队列中进行优先级排序,也即,将每一第三方应用和/或第三优先级***服务的用户使用频率、开机绝对时间、Activity名称、及用户使用时间等信息作为broadcastIntentLocked算法的变量,综合考虑各项标准进行优先等级排序。
由于每次开机启动时或者启动后对所述第三方应用和/或第三优先级***服务的操作不同,为了在下一次开机时在保证***流畅的前提下获得更好的用户体验,数组信息更新单元53会实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息,对每一次针对第三方应用和/或第三优先级***服务进行的操作进行记录,然后进行数组信息的实时更新,优先级顺序调整单元54根据更新后的数组信息,也即每一第三方应用和/或第三优先级***服务的用户使用频率、开机绝对时间、Activity名称、及用户使用时间,重新利用broadcastIntentLocked算法在receivers队列中进行优先级排序,以保证使用频率较高、开机绝对时间短,使用时间比较长的第三方应用和/或第三优先级***服务在下一次的启动中,最先接收FinishBooting函数发送的源生ACTION_BOOT_COMPLETED广播。
参照图4,该开机装置100还包括:
检测模块60,检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量;及
调试模块70,根据智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔。
本实施例中,该开机装置100还包括检测模块60和调试模块70,检测模块60用于开机***检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播在本次开机中启动的服务数量,调试模块70用于根据智能设备的硬件配置和BOOT_P0广播或自定义BOOT_P1广播在本次开机中启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔,在开机启动过程中,如果视频卡顿,则在重新启动时适当延长自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔,重复调试,保证开机***的运行流畅,所述时间间隔,也即预设时间一般定义为1秒,若***硬件配置较差,或者自定义广播启动的服务太多,则预设时间会多于1秒,若***硬件配置较差,或者自定义广播启动的服务较少,则预设时间会少于1秒。
本发明还提供一种Android智能设备,该Android智能设备包括如上所述的开机装置100,该智能设备为基于Android平台的智能电视。该智能电视在开机过程中,由ActivityManagerService启动模块10在Zygote创建的SystemServer进程中启动ActivityManagerService,由自定义BOOT_P0广播发送模块20利用ActivityManagerService在FinishBooting函数或FinishBooting函数的启动函数启动FinishBooting函数或其他进程中发送自定义BOOT_P0广播,以启动第一优先级的***服务或***应用,在BOOT_P0广播发出预设时间之后,由自定义BOOT_P1广播发送模块30发送自定义BOOT_P1广播,以启动优先级仅次于BOOT_P0广播启动的***服务或***应用,在BOOT_P1广播发出预设时间之后,由源生ACTION_BOOT_COMPLETED广播发送模块40发送启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播,根据需要启动的***Service的多少,还可以增加自定义BOOT_P广播,最后由源生ACTION_BOOT_COMPLETED广播接收模块50控制所述第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播,以在开机过程中,将要启动的应用或服务按照优先级的顺序先后进行启动,避免了众多应用或服务集中于同一时刻启动,占用CPU造成的***卡顿,减轻了智能电视Android开机***的负担,提高了该智能电视***运行的流畅性。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种开机方法,应用于Android智能设备,其特征在于,包括以下步骤:
在Zygote创建的SystemServer进程中启动ActivityManagerService;
ActivityManagerService发送用于启动第一优先级***服务或***应用的自定义BOOT_P0广播;
在所述自定义BOOT_P0广播发出后的预设时间之后,发送用于启动第二优先级***服务或***应用的自定义BOOT_P1广播;
在所述自定义BOOT_P1广播发出后的预设时间之后,发送用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播。
2.如权利要求1所述的开机方法,其特征在于,所述在所述自定义BOOT_P1广播发出预设时间之后,发送用于启动第三方应用和/或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播的步骤之后,还包括:
所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动。
3.如权利要求2所述的开机方法,其特征在于,所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动的步骤包括:
分别用数组保存每一第三方应用和/或第三优先级***服务的结构体,形成receivers队列;
依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked在receivers队列中进行优先级排序;
实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息;
依据更新后的数组信息调整第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序。
4.如权利要求3所述的开机方法,其特征在于,所述结构体的元素包括用户使用频率、开机绝对时间、Activity名称及用户使用时间。
5.如权利要求1所述的开机方法,其特征在于,所述预设时间的预设过程包括以下步骤:
检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量;
根据智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔。
6.一种开机装置,其特征在于,该开机装置包括:
ActivityManagerService启动模块,在Zygote创建的SystemServer进程中启动ActivityManagerService;
自定义BOOT_P0广播发送模块,利用ActivityManagerService发送用于启动第一优先级***服务或***应用的自定义BOOT_P0广播;
自定义BOOT_P1广播发送模块,在所述自定义BOOT_P0广播发出预设时间之后,发送用于启动第二优先级***服务或***应用的自定义BOOT_P1广播;及
源生ACTION_BOOT_COMPLETED广播发送模块,在所述自定义BOOT_P1广播发出预设时间之后,发送用于启动第三方应用或第三优先级***服务的源生ACTION_BOOT_COMPLETED广播。
7.如权利要求6所述的开机装置,其特征在于,该优化装置还包括:
源生ACTION_BOOT_COMPLETED广播接收模块,控制所述第三方应用和/或第三优先级***服务依据在receivers队列中的优先级顺序接收所述源生ACTION_BOOT_COMPLETED广播并启动。
8.如权利要求7所述的开机装置,其特征在于,所述源生ACTION_BOOT_COMPLETED广播接收模块包括:
receivers队列形成单元,分别用数组保存每一第三方应用和/或第三优先级***服务的结构体,形成receivers队列;
优先级排序单元,依据每一第三方应用和/或第三优先级***服务的结构体,利用broadcastIntentLocked在receivers队列中进行优先级排序;
数组信息更新单元,实时更新receivers队列中每一第三方应用和/或第三优先级***服务所对应的数组信息;及
优先级顺序调整单元,依据更新后的数组信息调整第三方应用和/或第三优先级***服务在receivers队列中的优先级顺序。
9.如权利要求8所述的开机装置,其特征在于,所述结构体的元素包括用户使用频率、开机绝对时间、Activity名称及用户使用时间。
10.如权利要求6所述的开机装置,其特征在于,该开机装置还包括:
检测模块,检测智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量;及
调试模块,根据智能设备的硬件配置和自定义BOOT_P0广播或自定义BOOT_P1广播启动的服务数量,调试自定义BOOT_P0广播和自定义BOOT_P1广播之间的时间间隔。
11.一种Android智能设备,其特征在于,该Android智能设备包括如权利要求6-10任一项所述的开机装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611036746.3A CN106792185B (zh) | 2016-11-15 | 2016-11-15 | 开机方法、开机装置及Android智能设备 |
PCT/CN2016/112813 WO2018090457A1 (zh) | 2016-11-15 | 2016-12-29 | 开机方法、开机装置及Android智能设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611036746.3A CN106792185B (zh) | 2016-11-15 | 2016-11-15 | 开机方法、开机装置及Android智能设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106792185A true CN106792185A (zh) | 2017-05-31 |
CN106792185B CN106792185B (zh) | 2020-08-04 |
Family
ID=58971334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611036746.3A Active CN106792185B (zh) | 2016-11-15 | 2016-11-15 | 开机方法、开机装置及Android智能设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106792185B (zh) |
WO (1) | WO2018090457A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775679A (zh) * | 2016-11-30 | 2017-05-31 | 深圳天珑无线科技有限公司 | 一种消息处理方法和装置 |
CN107861827A (zh) * | 2017-10-31 | 2018-03-30 | 努比亚技术有限公司 | 卡屏检测方法、移动终端及计算机可读存储介质 |
CN108038010A (zh) * | 2017-12-25 | 2018-05-15 | 青岛海信电器股份有限公司 | 安卓***启动阶段广播发送方法、装置和终端 |
CN108196892A (zh) * | 2017-12-29 | 2018-06-22 | 北京安云世纪科技有限公司 | 用于对***启动过程进行定制的方法、装置以及移动终端 |
CN108228367A (zh) * | 2017-12-29 | 2018-06-29 | 北京安云世纪科技有限公司 | 一种基于分级广播进行启动控制的方法、***和移动终端 |
CN112637683A (zh) * | 2020-12-07 | 2021-04-09 | 青岛海信传媒网络技术有限公司 | 显示设备***优化方法及显示设备 |
CN112631617A (zh) * | 2019-10-09 | 2021-04-09 | 深圳Tcl新技术有限公司 | 一种字节码优化方法和计算机设备 |
CN114153502A (zh) * | 2020-09-08 | 2022-03-08 | 深圳Tcl新技术有限公司 | 一种开机启动项的管控方法、存储介质及终端设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114047961A (zh) * | 2021-11-15 | 2022-02-15 | 合众新能源汽车有限公司 | 安卓***开机优化方法、智能终端和计算机可读介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146204A (ja) * | 2006-12-07 | 2008-06-26 | Hitachi Ltd | サービス管理システム、サービス管理装置およびサービス管理方法 |
JP2010217945A (ja) * | 2009-03-13 | 2010-09-30 | Panasonic Corp | アプリケーション動作調整システム |
CN102163150A (zh) * | 2010-02-24 | 2011-08-24 | 腾讯科技(深圳)有限公司 | 一种***启动方法及装置 |
CN102298532A (zh) * | 2011-09-15 | 2011-12-28 | 奇智软件(北京)有限公司 | 一种基于启动项的管理方法及装置 |
CN102707966A (zh) * | 2012-04-12 | 2012-10-03 | 腾讯科技(深圳)有限公司 | 加速操作***启动的方法及装置、预取信息生成方法及装置和终端 |
CN102830996A (zh) * | 2012-08-08 | 2012-12-19 | 广东欧珀移动通信有限公司 | 一种手持设备的快速开机方法 |
CN103064705A (zh) * | 2012-12-18 | 2013-04-24 | 北京奇虎科技有限公司 | 计算机***启动处理方法与装置 |
US8452949B1 (en) * | 2009-05-28 | 2013-05-28 | Cms Products, Inc. | Optical boot to eliminate changing BIOS to boot externally attached storage device |
US20150212825A1 (en) * | 2014-01-28 | 2015-07-30 | Hyundai Mobis Co., Ltd. | System and method for booting application of terminal |
CN105302611A (zh) * | 2015-11-13 | 2016-02-03 | 中标软件有限公司 | 一种Linux下的启动计算机***的方法及*** |
CN105549958A (zh) * | 2015-12-02 | 2016-05-04 | 海信集团有限公司 | 嵌入式***启动方法和智能终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488495A (zh) * | 2013-08-13 | 2014-01-01 | 广东欧珀移动通信有限公司 | 一种通过动态调整开机预加载资源加速开机的方法 |
CN105302588A (zh) * | 2014-07-09 | 2016-02-03 | 联想移动通信科技有限公司 | 一种终端应用程序加载方法、装置及终端 |
-
2016
- 2016-11-15 CN CN201611036746.3A patent/CN106792185B/zh active Active
- 2016-12-29 WO PCT/CN2016/112813 patent/WO2018090457A1/zh active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146204A (ja) * | 2006-12-07 | 2008-06-26 | Hitachi Ltd | サービス管理システム、サービス管理装置およびサービス管理方法 |
JP2010217945A (ja) * | 2009-03-13 | 2010-09-30 | Panasonic Corp | アプリケーション動作調整システム |
US8452949B1 (en) * | 2009-05-28 | 2013-05-28 | Cms Products, Inc. | Optical boot to eliminate changing BIOS to boot externally attached storage device |
CN102163150A (zh) * | 2010-02-24 | 2011-08-24 | 腾讯科技(深圳)有限公司 | 一种***启动方法及装置 |
CN102298532A (zh) * | 2011-09-15 | 2011-12-28 | 奇智软件(北京)有限公司 | 一种基于启动项的管理方法及装置 |
CN102707966A (zh) * | 2012-04-12 | 2012-10-03 | 腾讯科技(深圳)有限公司 | 加速操作***启动的方法及装置、预取信息生成方法及装置和终端 |
CN102830996A (zh) * | 2012-08-08 | 2012-12-19 | 广东欧珀移动通信有限公司 | 一种手持设备的快速开机方法 |
CN103064705A (zh) * | 2012-12-18 | 2013-04-24 | 北京奇虎科技有限公司 | 计算机***启动处理方法与装置 |
US20150212825A1 (en) * | 2014-01-28 | 2015-07-30 | Hyundai Mobis Co., Ltd. | System and method for booting application of terminal |
KR20150089660A (ko) * | 2014-01-28 | 2015-08-05 | 현대모비스 주식회사 | 단말의 애플리케이션 부팅 시스템 및 방법 |
CN105302611A (zh) * | 2015-11-13 | 2016-02-03 | 中标软件有限公司 | 一种Linux下的启动计算机***的方法及*** |
CN105549958A (zh) * | 2015-12-02 | 2016-05-04 | 海信集团有限公司 | 嵌入式***启动方法和智能终端 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775679A (zh) * | 2016-11-30 | 2017-05-31 | 深圳天珑无线科技有限公司 | 一种消息处理方法和装置 |
CN107861827A (zh) * | 2017-10-31 | 2018-03-30 | 努比亚技术有限公司 | 卡屏检测方法、移动终端及计算机可读存储介质 |
CN107861827B (zh) * | 2017-10-31 | 2021-05-21 | 努比亚技术有限公司 | 卡屏检测方法、移动终端及计算机可读存储介质 |
CN108038010A (zh) * | 2017-12-25 | 2018-05-15 | 青岛海信电器股份有限公司 | 安卓***启动阶段广播发送方法、装置和终端 |
CN108196892A (zh) * | 2017-12-29 | 2018-06-22 | 北京安云世纪科技有限公司 | 用于对***启动过程进行定制的方法、装置以及移动终端 |
CN108228367A (zh) * | 2017-12-29 | 2018-06-29 | 北京安云世纪科技有限公司 | 一种基于分级广播进行启动控制的方法、***和移动终端 |
CN108196892B (zh) * | 2017-12-29 | 2021-02-23 | 北京安云世纪科技有限公司 | 用于对***启动过程进行定制的方法、装置以及移动终端 |
CN108228367B (zh) * | 2017-12-29 | 2021-07-27 | 北京安云世纪科技有限公司 | 一种基于分级广播进行启动控制的方法、***和移动终端 |
CN112631617A (zh) * | 2019-10-09 | 2021-04-09 | 深圳Tcl新技术有限公司 | 一种字节码优化方法和计算机设备 |
CN114153502A (zh) * | 2020-09-08 | 2022-03-08 | 深圳Tcl新技术有限公司 | 一种开机启动项的管控方法、存储介质及终端设备 |
CN114153502B (zh) * | 2020-09-08 | 2024-07-05 | 深圳Tcl新技术有限公司 | 一种开机启动项的管控方法、存储介质及终端设备 |
CN112637683A (zh) * | 2020-12-07 | 2021-04-09 | 青岛海信传媒网络技术有限公司 | 显示设备***优化方法及显示设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106792185B (zh) | 2020-08-04 |
WO2018090457A1 (zh) | 2018-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106792185A (zh) | 开机方法、开机装置及Android智能设备 | |
US11462191B2 (en) | Methods, systems, and media for managing output of an HDMI source | |
CN105979375B (zh) | 一种智能电视的启动方法及装置 | |
CN108513154A (zh) | 基于智能电视的智能家居控制方法、智能电视及存储介质 | |
US10701435B2 (en) | Television video interception method and device | |
CN112350981B (zh) | 一种切换通信协议的方法、装置和*** | |
CN109286854B (zh) | 基于WiFi网络的网络流媒体卡顿检测及优化***及方法 | |
CN106407003A (zh) | 屏幕界面显示方法和*** | |
CN111694625A (zh) | 一种车盒向车机投屏的方法和设备 | |
CN104219544B (zh) | Iptv业务资源的动态调度方法与*** | |
WO2022268068A1 (zh) | 无线通信方法、装置、电子设备及可读存储介质 | |
CN113660653B (zh) | 一种传输方法、装置及电子设备 | |
CN105830418A (zh) | 一种共享界面的方法及终端设备 | |
CN105025373B (zh) | 电视机、远程控制***及其控制方法 | |
CN105407452A (zh) | 在蓝牙共享网络下控制数据流量的方法和*** | |
US8760512B2 (en) | Wireless video transmission device and wireless video reception device | |
CN106254810A (zh) | 一种视频通话方法和装置 | |
CN112929065B (zh) | 电子设备控制方法、装置和电子设备 | |
CN109963170A (zh) | 具有备援机制的串流***及其备援方法 | |
CN108924875A (zh) | 优先级设置方法、装置、用户设备及存储介质 | |
CN108196816A (zh) | 熄屏状态下的音乐播放控制方法、装置和计算机存储介质 | |
CN105657532B (zh) | 智能电视无线网开机启动方法以及装置 | |
KR20230071634A (ko) | 전자 장치 및 그 동작 방법 | |
CN105263064B (zh) | 一种播放控制方法及装置 | |
CN112887747B (zh) | 直播间控制方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |