一种通过动态调整开机预加载资源加速开机的方法技术

技术编号:9519219 阅读:73 留言:0更新日期:2014-01-01 16:52
本发明专利技术一种通过动态调整开机预加载资源加速开机的方法,包括下述步骤:S1、在预加载操作前,分别为需要预加载的可渲染类型和类准备两张Hash表格;S2、初始化一个预加载统计模块,并开始初始化统计;S3、根据传入的id值,用位运算解析出其资源id索引值;根据上述两类资源统计的本次开机需要实际加载次数排序表,选择出加载次数的资源;把新得到的开机预加载资源加载频率最高的可渲染类型和类资源分别更新到文件,并用作下次开机时的预加载资源标准。本发明专利技术能以更加贴近手机终端场景的预加载资源列表进行资源加载,提升开机速度,保证每次开机加载资源都是最优。

【技术实现步骤摘要】
【专利摘要】本专利技术,包括下述步骤:S1、在预加载操作前,分别为需要预加载的可渲染类型和类准备两张Hash表格;S2、初始化一个预加载统计模块,并开始初始化统计;S3、根据传入的id值,用位运算解析出其资源id索引值;根据上述两类资源统计的本次开机需要实际加载次数排序表,选择出加载次数的资源;把新得到的开机预加载资源加载频率最高的可渲染类型和类资源分别更新到文件,并用作下次开机时的预加载资源标准。本专利技术能以更加贴近手机终端场景的预加载资源列表进行资源加载,提升开机速度,保证每次开机加载资源都是最优。【专利说明】
本专利技术涉及移动手机的
,特别涉及。
技术介绍
现有智能机开机速度慢已经成为一种通病,google在android设计时已经有通过preload资源的方式进行开机资源预加载,进行速度提升。不过,开机预加载的资源量并不会在每种场景下都合适。现有技术也有针对APK应用的加速开机方法,其采用的技术方案是:1、手持设备开机时,系统初始化流程与系统服务正常启动;2、包管理服务对A P K程序进化优化扫描处理;3、包管理服务正常扫描系统A P K程序,并保存A P K程序包信息;4、包管理服务根据A P K过滤清单列表扫描一部分系统必需的非系统A P K程序,并保存相关程序包信息,且A P K过滤清单列表在用户安装A P K应用时,A P K应用被系统服务设置使用时,生成文件及更新信息;5、在系统开机之后,扫描除A P K过滤清单外的非系统A P K应用程序,并保存相关程序包信息,然后包管理服务通知其它系统服务及桌面,全部A P K程序己扫描完成,并再次发送开机广播,等待其它系统服务处理。上述技术方案虽然可以在一定的程度上加速手机开机,但是开机的速度仍然受到限制,也不能根据实际的资源量动态的调整开机方法。
技术实现思路
本专利技术的目的在于克服现有技术的缺点与不足,提供一种通过动态调整开机Preload资源加速开机的方法。本专利技术的目的通过下述技术方案实现:本专利技术通过动态调整开机预加载资源加速开机的方法,包括下述步骤:S1、在android的第一个进程Zygote执行ZygoteInit类的preload O方法前,分别为需要预加载可渲染类型drawable和类Class准备两张Hash表格;S2、初始化一个预加载统计模块,并开始初始化统计;S3、在没有接收到 ACT10N_B00T_C0MPLETED 广播前;A)每次Resources, java在进行1adDrawable时,根据传入的id值,用位运算解析出其资源id对应的索引值,并把其在drawable Hash表格中引用次数加I ;B)每次类加载器 ClassLoader 进行 load Class 时,根据 Class Name,在 Hash 表格中查找到对应的索引值,并对引用次数加I ;S4、接收到 ACT10N_B00T_C0MPLETED 后,对上述两类资源 drawable、Class 统计的本次开机实际需要加载次数,进行从大到小快速排序,并设定加载次数阈值,选择出大于或等于加载次数阈值的drawable和Class资源;S5、把新得到的开机preload资源加载频率最高的drawable和Class资源分别更新到文件,并用作下次开机时预加载资源标准。优选的,drawable是〈id值,引用次数>,Class是〈ClassName,引用次数〉。优选的,步骤S4中,加载次数阈值为5。优选的,android内置资源是用4个字节存储,用8个16进制数表示,总共分为3段:第一段:表不属于内置系统资源;第二段:表示属于id类型;第三段:表示id类型中的序号;步骤S3中,用位运算解析出ID索引值的具体方法是:S31、当执行流程:Resource.1oadDrawable (),根据传入的资源id,以位运算判断出此id是否是获取drawable ;S32、如果是drawable类型,则取出第三段,即低16位数据,则是此drawable资源的序号。优选的,步骤S31中,判断是否是drawable的具体方法是:对于id进行位右移16位运算,取高16位,看看是否是drawable类型。优选的,取出方法是:对于id用0X1111进行位与运算,把高16位截断变成0,低16位取出。优选的,在取出第三段后,直接把数组元素的引用次数加I。优选的,在步骤S5之后,还包括释放预加载的资源。本专利技术相对于现有技术具有如下的优点及效果:本专利技术是根据每台手机终端用户实际安装apk情况,每次开机启动时实际优先load的资源(drawable, class)统计情况,来动态调整需要load的资源。相对于原生来讲,此技术方案,能以更加贴近手机终端场景的preload资源列表进行资源load,提升开机速度,同时保证每次开机load资源都是最优,也是实际最需要的。【专利附图】【附图说明】图1是本专利技术的流程图。【具体实施方式】下面结合实施例及附图对本专利技术作进一步详细的描述,但本专利技术的实施方式不限于此。实施例android原生开机preload资源中drawable占据非常大的数量(300多),而图片资源load非常耗时。同时,preload-class的量更大,有2000多个class (frameworks\base\preloaded-classes)。那么,是否是每种场景下都需要load这么多资源呢?实际每个移动终端场景不同,安装apk不同,需要的量是不同的。同时,每个用于使用习惯不同,可能需要预加载的Class也不一样。那么这种方式,对于实际开机速度,并不会带来提升。本实施例中,通过记录每次开机时,用户实际需要的资源量,用于下次开机时preload (预加载)的标准。如图1所示,本专利技术通过动态调整开机Preload资源加速方法,步骤1:在ZygoteInit进行preload O操作前,分别为需要preload的drawable, Class 准备两张 Hash 表格。drawable的是〈id值,引用次数>,Class可以是〈ClassName,引用次数>。其中drawable的Hash表格可以用一维数组来完成,可以快速进行定位修改。步骤2:初始化一个preload统计模块,并开始初始化统计。步骤3:在没有接收到ACT10N_B00T_C0MPLETED广播前,A)每次 Resources, java 在进行 1adDrawable 时,Drawable1adDrawable(TypedValue value, int id)根据传入的id值,用位运算解析出其资源id索引值,并把其在drawableHash表格中引用次数加加I ;B)同上,每次 ClassLoader 进行 load Class 时,根据 Class Name,修改其 Hash 索引表格中引用次数加I。步骤4:接收到 ACT10N_B00T_C0MPLETED 后,根据上诉两类资源 drawable, Class统计的本次开机需要实际加载次数排序表,选择出加载次数>=5次的drawable和Class资源。步骤5:把新得到的开机preload资源加载频率最高的draw本文档来自技高网
...
一种通过动态调整开机预加载资源加速开机的方法

【技术保护点】
一种通过动态调整开机预加载资源加速开机的方法,其特征在于,包括下述步骤:S1、在android的第一个进程Zygote执行ZygoteInit类的preload()方法前,分别为需要预加载的可渲染类型drawable和类Class准备两张Hash表格;S2、初始化一个预加载统计模块,并开始初始化统计;S3、在没有接收到ACTION_BOOT_COMPLETED广播前;A)每次Resources.java在进行loadDrawable时,根据传入的id值,用位运算解析出其资源id对应的索引值,并把其在drawable?Hash表格中引用次数加1;B)每次类加载器ClassLoader进行load?Class时,根据Class?Name,在Hash表格中查找到对应的索引值,并对引用次数加1;S4、接收到ACTION_BOOT_COMPLETED后,对上述两类资源drawable、Class统计的本次开机实际需要加载次数,进行从大到小快速排序,并设定加载次数阈值,选择出大于或等于加载次数阈值的drawable和Class资源;S5、把新得到的开机preload资源加载频率最高的drawable和Class资源分别更新到文件,并用作下次开机时预加载资源标准。...

【技术特征摘要】

【专利技术属性】
技术研发人员:蒋奎
申请(专利权)人:广东欧珀移动通信有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1