本发明涉及计算机技术领域,尤其涉及一种apk权限分配方法及系统。
背景技术:
基于linux平台之上的android操作系统现在正迅猛的占领各个消费电子领域。android操作系统重启时,由于其自身的复杂性,导致该系统从设备上电启动开始到用户能够进行界面操作这一时间间隔变得越来越长,为了给用户提供一个良好的体验环境,需要尽可能的缩短这一时间间隔达到android操作系统快速启动的目的。
现有技术中通常采用较新、运行速度较快的硬件模块来缩短启动时间,这无疑提高了使用成本;
通过分析,我们可以知道系统在启动的时候在某个阶段会对系统内部的apk进行权限分配工作,并且这个过程是一个单线程的串行过程,而此时的cpu利用率并不是很高,这样就导致了系统启动的速度降低了。
技术实现要素:
本发明所要解决的技术问题是:本发明提供一种apk权限分配方法及系统,提高了cpu的利用率,缩短了apk权限分配所需的时间,从而缩短了系统启动时所需要的时间,提高了用户的体验。
为了解决上述技术问题,本发明提供了一种apk权限分配方法,包括以下步骤:
s1:创建线程池,所述线程池包括多个线程;
s2:通过线程池对系统中apk的权限进行并行分配。
本发明还提供了一种apk权限分配系统,包括:
第一创建模块,用于创建线程池,所述线程池包括多个线程;
分配模块,用于通过线程池对系统中apk的权限进行并行分配。
本发明的有益效果为:
本发明通过线程池中的多线程对系统中多个apk的权限进行并行分配,解决了系统初始化时通过单线程对apk权限分配,所用的时间较长的问题,同时通过上述方法,无需更新系统硬件或采用高性能的硬件,降低了使用成本;通过多线程对系统中的apk的权限进行并行分配,这一过程中提高了cpu的利用率,缩短了apk权限分配所需的时间,从而缩短了系统启动时所需要的时间,使用户重启系统的等待时间缩短,提高了用户的体验。
附图说明
图1为根据本发明实施例的一种apk权限分配方法的主要步骤示意图;
图2为采用本发明的一种apk权限分配方法与未采用该方法时系统启动所需时间的对比图;
图3为根据本发明实施例二的一种apk权限分配方法的流程图;
图4为根据本发明实施例的一种apk权限分配系统的结构示意图;
图5为根据本发明实施例的分配模块的结构示意图;
标号说明:
1、第一创建模块;2、分配模块;3、第二创建模块;4、获取模块;5、存储模块;6、保护模块;7、删除模块;8、预设模块;9、第一查询模块;
10、第二查询模块;11、获取单元;12、设置单元;13、赋予单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:通过线程池对系统中多个apk的权限进行并行分配,缩短了系统启动所需的时间,降低了使用成本,提高了用户体验。
请参照图1和图3所示,本发明提供了一种apk权限分配方法,包括以下步骤:
s1:创建线程池,所述线程池包括多个线程;
s2:通过线程池对系统中apk的权限进行并行分配。
从上述描述可知,本发明通过线程池中的多线程对系统中多个apk的权限进行并行分配,解决了系统初始化时通过单线程对apk权限分配,所用的时间较长的问题,同时通过上述方法,无需更新系统硬件或采用高性能的硬件,降低了使用成本;通过多线程对系统中的apk的权限进行并行分配,这一过程中提高了cpu的利用率,缩短了apk权限分配所需的时间,从而缩短了系统启动时所需要的时间,使用户重启系统的等待时间缩短,提高了用户的体验。
进一步的,所述的一种apk权限分配方法,还包括:
创建数据结构;
获取所述系统中每一个apk的信息,所述apk的信息包括apk的包名、权限字符串信息和安装路径;
将所述每一个apk的信息存储在所述数据结构中。
从上述描述可知,通过数据结构存储apk的信息,能够提高数据存储及获取的速率。
进一步的,所述s2具体为:
所述线程池中每一个线程获取所述数据结构中一apk的信息;
根据所述apk的信息中权限字符串信息,设置所述apk的权限;
根据所述apk的信息中的安装路径,赋予apk相应的uid信息和gid信息;
所述uid信息为相应的用户id编号信息,所述gid信息为相应的用户所在组id编号信息。
从上述描述可知,相对于现有技术中直接获取apk的相关信息,对apk权限进行管理,获取时所需要的时间较长,本发明通过上述方法,线程池中每一个线程从数据结构获取apk的信息,根据相关信息对apk的权限进行设置管理,上述方法缩短了apk的信息获取所需要的时间,提高数据处理的效率,缩短apk权限分配所需要的时间。
进一步的,所述的一种apk权限分配方法,还包括:
通过同步锁机制控制多个线程中的每一个线程对数据结构中apk的信息的获取。
从上述描述可知,通过上述方法,避免了多个线程同时对数据结构中同一apk的获取,而造成多个线程对同一个apk的权限进行分配,使apk权限分配混乱的问题。
进一步的,所述的一种apk权限分配方法,还包括:
当一线程对一apk的权限成功分配后,删除所述数据结构中该apk的信息。
从上述描述可知,通过上述方法,能够避免当一apk的权限成功分配后,其他线程还获取该apk的信息,并对其权限进行分配,造成资源浪费,处理效率低的问题。
进一步的,所述的一种apk权限分配方法,还包括:
预设控制所述线程池工作的主线程;
所述主线程每隔预设第一时间间隔查询所述数据结构是否为空,若不为空,则继续等待;若为空,则控制线程池退出apk权限分配。
从上述描述可知,通过上述方法,主线程能够及时获取系统中apk权限分配管理情况,并控制线程池及时退出apk权限分配,避免占用系统资源,同时以便主线程对apk进行后续的相关处理。
进一步的,“当一线程对一apk的权限成功分配后,删除所述数据结构中该apk的信息”之后还包括:
查询所述数据结构是否为空,若不为空,所述线程继续获取所述数据结构中一apk的信息,对所述apk的权限进行分配。
从上述描述可知,通过上述方法能够提高线程池中各个线程的利用率,缩短了apk权限分配所需的时间。
请参照图4至图5所示,本发明提供了一种apk权限分配系统,包括:
第一创建模块1,用于创建线程池,所述线程池包括多个线程;
分配模块2,用于通过线程池对系统中apk的权限进行并行分配。
进一步的,所述的一种apk权限分配系统,还包括:
第二创建模块3,用于创建数据结构;
获取模块4,用于获取所述系统中每一个apk的信息,所述apk的信息包括apk的包名、权限字符串信息和安装路径;
存储模块5,用于将所述每一个apk的信息存储在所述数据结构中。
进一步的,所述分配模块2包括:
获取单元11,用于所述线程池中每一个线程获取所述数据结构中一apk的信息;
设置单元12,用于根据所述apk的信息中权限字符串信息,设置所述apk的权限;
赋予单元13,用于根据所述apk的信息中的安装路径,赋予apk相应的uid信息和gid信息。
进一步的,所述的一种apk权限分配系统,还包括:
保护模块6,用于通过同步锁机制控制多个线程中的每一个线程对数据结构中apk的信息的获取。
进一步的,所述的一种apk权限分配系统,还包括:
删除模块7,用于当一线程对一apk的权限成功分配后,删除所述数据结构中该apk的信息。
进一步的,所述的一种apk权限分配系统,还包括:
预设模块8,用于预设控制所述线程池工作的主线程;
第一查询模块9,用于所述主线程每隔预设第一时间间隔查询所述数据结构是否为空,若不为空,则继续等待;若为空,则控制线程池退出apk权限分配。
进一步的,所述的一种apk权限分配系统,还包括:
第二查询模块10,用于查询所述数据结构是否为空,若不为空,所述线程继续获取所述数据结构中一apk的信息,对所述apk的权限进行分配。
请参照图1所示,本发明的实施例一为:
本发明提供的一种apk权限分配方法,包括以下步骤:
s1:创建线程池,所述线程池包括多个线程;
所述s1之后还包括:
创建数据结构;
获取所述系统中每一个apk的信息,所述apk的信息包括apk的包名、权限字符串信息和安装路径;
将所述每一个apk的信息存储在所述数据结构中;
s2:通过线程池对系统中apk的权限进行并行分配;
所述s2具体为:
通过同步锁机制控制多个线程中的每一个线程对数据结构中apk的信息的获取;
所述线程池中每一个线程获取所述数据结构中一apk的信息;
根据所述apk的信息中权限字符串信息,设置所述apk的权限;
根据所述apk的信息中的安装路径,赋予apk相应的uid信息和gid信息;
当一线程对一apk的权限成功分配后(即设置apk的权限和赋予apk相应的uid信息和gid信息完成后)后,删除所述数据结构中该apk的信息;
所述s2之后还包括:
预设控制所述线程池工作的主线程;
所述主线程每隔预设第一时间间隔查询所述数据结构是否为空,若不为空,则继续等待,所述线程继续获取所述数据结构中一apk的信息,对所述apk的权限进行分配;若为空,则控制线程池退出apk权限分配。
从上述描述可知,通过多线程对系统中的apk的权限进行并行分配管理,这一过程中提高了cpu的利用率,缩短了apk权限分配所需的时间,从而缩短了系统启动时所需要的时间,使用户重启系统的等待时间缩短,提高了用户的体验。
请参照图2至图3所示,本发明的实施例二为:
首先,在进入apk权限分配的流程之前,创建线程池,所述线程池包括多个线程,留待之后分配权限使用;
其次,使用标准android数据结构—列表,将已经安装进入系统当中的各个apk的信息临时进行保存,以便留待以后线程处理,apk的信息包含有apk的包名、权限字符串、安装路径;
通过线程池对系统中apk的权限进行并行分配;具体如下:线程池中每一个线程处理权限分配的流程主要包含两个过程:依据apk信息包中的权限字符串进行应用的权限设置,依据apk信息中的安装路径赋予apk相应的uid与gid信息;完成上述权限分配后,判断列表中是否还有未处理的apk,若有,则继续对列表中的一apk进行相应的权限分配,若没有,则该线程退出;
由于创建线程池为android平台的标准线程池,线程池中包括多个线程,权限分配过程会自动分配到相应的线程中去,无需人力干预;每个apk权限分配结束之后,线程会将这个apk信息节点移除出列表;考虑到会有多个线程访问列表的情况,因此采用android标准同步锁机制保护列表的多线程访问;控制线程池工作的主线程每隔5秒查询该列表是否为空,如果为空,就进入后续的处理过程,如果列表不为空就重新等待;如图2所示,通过实验可以发现通过本发明所采用的apk权限分配方法对系统启动进行优化处理,可以缩短系统启动时所需要的时间。
请参照图4至图5所示,本发明的实施例三为:
通过第一创建模块创建线程池,所述线程池包括多个线程,并将创建结果发送至;第二创建模块创建数据结构,并将创建结果发送至存储模块;获取模块获取所述系统中每一个apk的信息,所述apk的信息包括apk的包名、权限字符串信息和安装路径,并将获取结果发送至存储模块;存储模块用于将所述每一个apk的信息存储在所述数据结构中,并将存储结果发送至获取单元;保护模块通过同步锁机制控制多个线程中的每一个线程对数据结构中apk的信息的获取;获取单元用于所述线程池中每一个线程获取所述数据结构中一apk的信息,并将所述apk的信息发送至设置单元和赋予单元;设置单元根据所述apk的信息中权限字符串信息,设置所述apk的权限,并将设置成功信息发送至删除模块;赋予单元根据所述apk的信息中的安装路径,赋予apk相应的uid信息和gid信息,并将赋予成功信息发送至删除模块;删除模块,用于当一线程对一apk的权限成功分配管理后,即完成设置权限及赋予apk相应的uid信息和gid信息,删除所述数据结构中该apk的信息,并将删除后的数据结构分别发送至第一查询模块和第二查询模块;预设模块预设控制所述线程池工作的主线程;第一查询模块用于所述主线程每隔预设第一时间间隔查询所述数据结构是否为空,若不为空,则继续等待;若为空,则控制线程池退出apk权限分配;第二查询模块查询所述数据结构是否为空,若不为空,所述线程继续获取所述数据结构中一apk的信息,对所述apk的权限进行分配。
综上所述,本发明通过线程池中的多线程对系统中多个apk的权限进行并行分配,解决了系统初始化时通过单线程对apk权限分配,所用的时间较长的问题,同时通过上述方法,无需更新系统硬件或采用高性能的硬件,降低了使用成本;通过多线程对系统中的apk的权限进行并行分配,这一过程中提高了cpu的利用率,缩短了apk权限分配所需的时间,从而缩短了系统启动时所需要的时间,使用户重启系统的等待时间缩短,提高了用户的体验。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。