更新应用程序的方法及装置制造方法及图纸

技术编号:10924306 阅读:64 留言:0更新日期:2015-01-19 04:17
本公开实施例提供了更新应用程序的方法及装置,其中的方法包括:获取终端设备处理器的核数;根据所述核数在第一语言环境下开启多个更新线程;在每个更新线程中,通过预设的接口调用由第二语言实现的更新函数以对第一列表中的一个应用程序进行更新,并将所述被更新的应用程序从第一列表移至第二列表;在收到一个更新线程对一个应用程序更新完成的响应后,将更新完成的应用程序从第二列表中移除。本公开中使用预设的接口例如JNI接口,使一种语言下的更新线程可以直接调用另一种语言下的更新函数,不但避免了因建立socket连接而导致的时间及系统资源消耗,且可同时进行多线程更新,大大提高了应用程序同时需要更新时的更新效率。

【技术实现步骤摘要】
【专利摘要】本公开实施例提供了更新应用程序的方法及装置,其中的方法包括:获取终端设备处理器的核数;根据所述核数在第一语言环境下开启多个更新线程;在每个更新线程中,通过预设的接口调用由第二语言实现的更新函数以对第一列表中的一个应用程序进行更新,并将所述被更新的应用程序从第一列表移至第二列表;在收到一个更新线程对一个应用程序更新完成的响应后,将更新完成的应用程序从第二列表中移除。本公开中使用预设的接口例如JNI接口,使一种语言下的更新线程可以直接调用另一种语言下的更新函数,不但避免了因建立socket连接而导致的时间及系统资源消耗,且可同时进行多线程更新,大大提高了应用程序同时需要更新时的更新效率。【专利说明】更新应用程序的方法及装置
本公开涉及终端设备程序处理
,尤其涉及更新应用程序的方法及装置。
技术介绍
随着智能手机、平板电脑等终端设备的硬件配置不断提升、功能日益丰富,用户对 这些终端设备的需求也在增强,往往会在终端设备中安装各种各样的应用程序,这就使得 终端设备上的应用程序越来越多。 并且,为了提升用户体验,移动终端的操作系统也会经常进行升级操作。在 Android系统中,每进行一次系统升级,会对操作系统中所有的应用程序进行更新(也可称 为优化),以使其在升级后的操作系统中可以快速运行。其中,对应用程序的更新操作以 0DEX操作为主。这样每次在系统升级完毕后的第一次开机启动时,因为要依次更新众多应 用程序,会导致启动过程非常慢,耗费很长的时间。 以安装了 Android安卓系统的手机为例,安卓系统通常使用Java语言作为开发工 具,但由于某些原因,应用程序更新的底层代码会使用Native语言(例如C/C++语言,C/ C++等语目相对于Java来讲可称为Native语目,或者原生语目、本地语目)来实现,所以 应用程序的更新就会涉及到Native语言层与Java层之间的通信。在相关技术中,安卓系 统采用的是socket通信机制,即在Java层与Native语言层之间建立socket连接,通过 socket连接实现应用程序的更新。然而,建立socket连接本身就会消耗一定的时间及系统 资源,而且该通信机制也决定了更新过程只能是单线程执行,即逐一更新各应用程序,所以 效率很低,造成系统升级完毕后的第一次开机启动过程非常耗时。
技术实现思路
为克服相关技术中存在的问题,本公开提供更新应用程序的方法及装置,以解决 同时更新多个应用程序时耗时较长的问题。 根据本公开实施例的第一方面,提供一种更新应用程序的方法,所述方法包括: 获取第一列表,所述第一列表为待更新的应用程序的列表; 创建第二列表,所述第二列表为正在更新的应用程序的列表; 获取终端设备处理器的核数; 根据所述核数在第一语言环境下同时开启多个更新线程; 在每个所述更新线程中,通过预设的接口调用由第二语言实现的更新函数以对所 述第一列表中的一个应用程序进行更新,并将所述被更新的应用程序从所述第一列表移至 所述第二列表; 在收到一个更新线程对一个应用程序更新完成的响应后,将所述更新完成的应用 程序从所述第二列表中移除。 可选的,所述第一语言为Java,所述第二语言为C/C++,所述预设的接口为Java本 地接口 JNI。 可选的,所述通过预设的接口调用由第二语言实现的更新函数,包括: 在负责应用程序更新的Java类中加载指定C文件编译后生成的类库,其中所述 c文件中含有所述使用C/C++实现的更新函数且所述C文件中引入了 JNI. h头文件,所述 Java类中声明了所述更新函数; 在所述Java类的所述更新线程中,直接调用所述更新函数。 可选的,所述多个更新线程的个数为: 如果 M> = N,则 a = N ;如果 M〈N,则 a = Μ ; 其中,a为所述多个更新线程的个数,Μ为所述第一列表中应用程序的个数,Ν为所 述处理器的核数。 可选的,所述方法还包括: 在收到一个更新线程对一个应用程序更新完成的响应后,判断所述第一列表中是 否还有应用程序; 如果所述第一列表中没有应用程序,则结束当前的更新线程; 如果所述第一列表中仍有应用程序,则继续在所述第一列表中选取一个应用程序 通过当前的更新线程进行更新。 根据本公开实施例的第二方面,提供一种更新应用程序的装置,所述装置包括: 列表操作模块,用于获取第一列表,所述第一列表为待更新的应用程序的列表;创 建第二列表,所述第二列表为正在更新的应用程序的列表;将正在被更新的应用程序从所 述第一列表移至所述第二列表;以及,在收到一个更新线程对一个应用程序更新完成的响 应后,将所述更新完成的应用程序从所述第二列表中移除; 线程控制模块,用于获取终端设备处理器的核数;根据所述核数在第一语言环境 下同时开启多个更新线程; 更新执行模块,用于在每个所述更新线程中,通过预设的接口调用由第二语言实 现的更新函数以对所述第一列表中的一个应用程序进行更新。 可选的,所述第一语言为Java,所述第二语言为C/C++,所述预设的接口为Java本 地接口 JNI。 可选的,所述更新执行模块包括: 调用准备子模块,用于在负责应用程序更新的Java类中加载指定C文件编译后生 成的类库,其中所述C文件中含有所述使用C/C++实现的更新函数且所述C文件中引入了 JNI. h头文件,所述Java类中声明了所述更新函数; 调用执行子模块,用于在所述Java类的所述更新线程中,直接调用所述更新函 数。 可选的,所述线程控制模块还用于: 在收到一个更新线程对一个应用程序更新完成的响应后,判断所述第一列表中是 否还有应用程序;如果所述第一列表中没有应用程序,则结束当前的更新线程;如果所述 第一列表中仍有应用程序,则继续在所述第一列表中选取一个应用程序通过当前的更新线 程进行更新。 根据本公开实施例的第三方面,提供一种更新应用程序的装置,包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为: 获取第一列表,所述第一列表为待更新的应用程序的列表; 创建第二列表,所述第二列表为正在更新的应用程序的列表; 获取终端设备处理器的核数; 根据所述核数在第一语言环境下同时开启多个更新线程; 在每个所述更新线程中,通过预设的接口调用由第二语言实现的更新函数以对所 述第一列表中的一个应用程序进行更新,并将所述被更新的应用程序从所述第一列表移至 所述第二列表; 在收到一个更新线程对一个应用程序更新完成的响应后,将所述更新完成的应用 程序从所述第二列表中移除。 本公开的实施例提供的技术方案可以包括以下有益效果: 在本公开实施例中,不再使用socket通信技术,也即并未在两种语言之间建立 socket连接,而是使用预设的接口,例如JNI接口,使一种语言下的更新线程可以直接调用 另一种语言下的更新函数,从而不但避免了因建立socket连接而导致的时间及系统资源 的消耗,而且将单线程的更新转变为同时进行的多线程更新,大大提高了本文档来自技高网
...

【技术保护点】
一种更新应用程序的方法,其特征在于,所述方法包括:获取第一列表,所述第一列表为待更新的应用程序的列表;创建第二列表,所述第二列表为正在更新的应用程序的列表;获取终端设备处理器的核数;根据所述核数在第一语言环境下同时开启多个更新线程;在每个所述更新线程中,通过预设的接口调用由第二语言实现的更新函数以对所述第一列表中的一个应用程序进行更新,并将所述被更新的应用程序从所述第一列表移至所述第二列表;在收到一个更新线程对一个应用程序更新完成的响应后,将所述更新完成的应用程序从所述第二列表中移除。

【技术特征摘要】

【专利技术属性】
技术研发人员:续丽娜李明浩刘洪杰
申请(专利权)人:小米科技有限责任公司
类型:发明
国别省市:北京;11

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

1