一种应用程序的运行方法及装置.pdf

上传人:b*** 文档编号:497535 上传时间:2018-02-19 格式:PDF 页数:18 大小:1.12MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410412552.3

申请日:

2014.08.20

公开号:

CN104216738A

公开日:

2014.12.17

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/445申请日:20140820|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

北京奇艺世纪科技有限公司

发明人:

龙勇

地址:

100080 北京市海淀区北一街2号鸿城拓展大厦10、11层

优先权:

专利代理机构:

北京润泽恒知识产权代理有限公司 11319

代理人:

赵娟

PDF下载: PDF下载
内容摘要

本申请实施例提供了一种应用程序的运行方法及装置,其中,所述方法包括:在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;按照所述扩展信息运行所述插件;其中,所述插件封装有所述应用程序中指定的业务对象。本申请可以提高应用程序主进程的稳定性和降低应用程序的更新成本。

权利要求书

1.  一种应用程序的运行方法,其特征在于,包括:
在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;
按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;
按照所述扩展信息运行所述插件;
其中,所述插件封装有所述应用程序中指定的业务对象。

2.
  根据权利要求1所述的方法,其特征在于,所述加载信息包括立即加载信息和延迟加载信息中的至少一种信息。

3.
  根据权利要求1或2所述的方法,其特征在于,所述扩展信息包括插件类型信息、插件路径信息和用户界面参数信息中的至少一种信息。

4.
  根据权利要求3所述的方法,其特征在于,所述根据所述加载信息和扩展信息通过所述扩展接口加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为立即加载信息;
在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。

5.
  根据权利要求3所述的方法,其特征在于,所述根据所述加载信息和扩展信息通过所述扩展接口加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为立即加载信息;
在应用程序的主进程启动时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。

6.
  根据权利要求3所述的方法,其特征在于,所述根据所述加载信息和扩展信息通过所述扩展接口加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为延时加载信息;
在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
在所述用户界面接收到应用程序的运行请求时,在所述插件类型信息对 应的进程中加载所述插件路径信息指示的插件文件。

7.
  根据权利要求3所述的方法,其特征在于,所述根据所述加载信息和扩展信息加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为延时加载信息;
在应用程序的主进程启动后,间隔预设的延迟时间时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。

8.
  根据权利要求3所述的方法,其特征在于,所述按照所述扩展信息运行所述插件的步骤包括:
按照所述插件类型信息创建对应的插件代理;
由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中;
在所述插件类型信息对应的进程中按照所述参数信息运行插件文件中对应的函数。

9.
  根据权利要求4、5、6、7或8所述的方法,其特征在于,所述插件类型信息包括进程内插件信息和进程外插件信息中的至少一种信息;
所述进程内插件信息对应的插件代理为进程内插件代理,所述进程内插件信息对应的进程为所述应用程序的主进程;
所述进程外插件信息对应的插件代理为进程外插件代理,所述进程外插件信息对应的进程为独立的插件进程。

10.
  根据权利要求9所述的方法,其特征在于,所述由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中的步骤还包括:
由所述进程外插件代理通过进程间通信将运行所述插件所需的参数信息发送至所述独立的插件进程。

11.
  一种应用程序的运行装置,其特征在于,包括:
查找模块,用于在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;
加载模块,用于按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;
运行模块,用于按照所述扩展信息运行所述插件;
其中,所述插件封装有所述应用程序中指定的业务对象。

12.
  根据权利要求11所述的装置,其特征在于,所述加载信息包括立即加载信息和延迟加载信息中的至少一种信息。

13.
  根据权利要求11所述的装置,其特征在于,所述扩展信息包括插件类型信息、插件路径信息和用户界面参数信息中的至少一种信息。

14.
  根据权利要求13所述的装置,其特征在于,所述加载模块包括:
第一判断子模块,用于判断所述加载信息为立即加载信息;
第一调整子模块,用于在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
第一加载子模块,用于在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。

15.
  根据权利要求13所述的装置,其特征在于,所述加载模块包括:
第二判断子模块,用于判断所述加载信息为立即加载信息;
第二加载子模块,用于在应用程序的主进程启动时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。

16.
  根据权利要求13所述的装置,其特征在于,所述加载模块包括:
第三判断子模块,用于判断所述加载信息为延迟加载信息;
第二调整子模块,用于在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
第三加载子模块,用于在所述用户界面接收到应用程序的运行请求时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。

17.
  根据权利要求13所述的装置,其特征在于,所述加载模块包括:
第四判断子模块,用于判断所述加载信息为延迟加载信息;
第四加载子模块,用于在应用程序的主进程启动后,间隔预设的延迟时间时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件 文件。

18.
  根据权利要求13所述的装置,其特征在于,所述运行模块包括:
创建子模块,用于按照所述插件类型信息创建对应的插件代理;
第一发送子模块,用于由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中;
第一运行子模块,用于在所述插件类型信息对应的进程中按照所述参数信息运行插件文件中对应的函数。

19.
  根据权利要求14、15、16、17或18所述的装置,其特征在于,所述插件类型信息包括进程内插件信息和进程外插件信息中的至少一种信息;
所述进程内插件信息对应的插件代理为进程内插件代理,所述进程内插件信息对应的进程为所述应用程序的主进程;
所述进程外插件信息对应的插件代理为进程外插件代理,所述进程外插件信息对应的进程为独立的插件进程。

20.
  根据权利要求19所述的装置,其特征在于,所述第一发送子模块包括:
第二发送子模块,用于由所述进程外插件代理通过进程间通信将运行所述插件所需的参数信息发送至所述独立的插件进程。

说明书

一种应用程序的运行方法及装置
技术领域
本申请涉及计算机的技术领域,特别是涉及一种应用程序的运行方法,以及,一种应用程序的运行装置。
背景技术
目前,随着互联网的高速发展,网络应用趋向多元化,尤其是随着移动设备的大规模普及,诸如即时通讯工具、电子邮箱、网页浏览器等等应用程序,被广泛应用在用户生活和工作的各个方面。
在应用程序编译发布后,由于应用程序的功能模块并非是稳定不变的,通常会发现两种情况。
第一种情况是,应用程序的某些功能模块需要不断变化。
第二种情况是,应用程序的UI(User Interface,即用户界面)需要为功能模块提供不同的入口展示。
针对上述第一种情况,传统的做法是将需要不断变化的功能模块封装成DLL(Dynamic Link Library,即动态链接库)文件,然后加载到应用程序主进程中运行。
但是,因为DLL文件是和应用程序主进程在同一个进程内,这就导致了DLL文件的稳定性直接影响应用程序主进程的稳定性,一旦DLL文件崩溃,必然导致应用程序主进程的崩溃,稳定性十分差,严重影响应用程序的正常使用。
针对上述第二种情况,传统的做法是通过不断修改应用程序的主程序,以支持应用程序不断改变的功能模块的UI展示。
然而,这种做法需要不断修改应用程序的主程序,而修改后的应用程序需要进行重新测试、重新编译发布,这就使得应用程序进行更新的时间及人力等成本较高。
因此,目前需要本领域技术人员迫切解决的一个技术问题是:提出一种新的应用程序的运行机制,用以提高应用程序主进程的稳定性和降 低应用程序的更新成本。
发明内容
本申请实施例所要解决的技术问题是提供一种应用程序的运行方法,用以提高应用程序主进程的稳定性和降低应用程序的更新成本。
相应的,本申请实施例还提供了一种应用程序的运行装置,用以保证上述方法的实现及应用。
为了解决上述问题,本申请公开了一种应用程序的运行方法,包括:
在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;
按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;
按照所述扩展信息运行所述插件;
其中,所述插件封装有所述应用程序中指定的业务对象。
优选的,所述加载信息包括立即加载信息和延迟加载信息中的至少一种信息。
优选的,所述扩展信息包括插件类型信息、插件路径信息和用户界面参数信息中的至少一种信息。
优选的,所述根据所述加载信息和扩展信息通过所述扩展接口加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为立即加载信息;
在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述根据所述加载信息和扩展信息通过所述扩展接口加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为立即加载信息;
在应用程序的主进程启动时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述根据所述加载信息和扩展信息通过所述扩展接口加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为延时加载信息;
在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
在所述用户界面接收到应用程序的运行请求时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述根据所述加载信息和扩展信息加载所述配置文件对应的插件的步骤包括:
判断所述加载信息为延时加载信息;
在应用程序的主进程启动后,间隔预设的延迟时间时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述按照所述扩展信息运行所述插件的步骤包括:
按照所述插件类型信息创建对应的插件代理;
由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中;
在所述插件类型信息对应的进程中按照所述参数信息运行插件文件中对应的函数。
优选的,所述插件类型信息包括进程内插件信息和进程外插件信息中的至少一种信息;
所述进程内插件信息对应的插件代理为进程内插件代理,所述进程内插件信息对应的进程为所述应用程序的主进程;
所述进程外插件信息对应的插件代理为进程外插件代理,所述进程外插件信息对应的进程为独立的插件进程。
优选的,所述由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中的步骤还包括:
由所述进程外插件代理通过进程间通信将运行所述插件所需的参数信息发送至所述独立的插件进程。
本申请实施例还公开了一种应用程序的运行装置,包括:
查找模块,用于在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;
加载模块,用于按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;
运行模块,用于按照所述扩展信息运行所述插件;
其中,所述插件封装有所述应用程序中指定的业务对象。
优选的,所述加载信息包括立即加载信息和延迟加载信息中的至少一种信息
优选的,所述扩展信息包括插件类型信息、插件路径信息和用户界面参数信息中的至少一种信息。
优选的,所述加载模块包括:
第一判断子模块,用于判断所述加载信息为立即加载信息;
第一调整子模块,用于在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
第一加载子模块,用于在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述加载模块包括:
第二判断子模块,用于判断所述加载信息为立即加载信息;
第二加载子模块,用于在应用程序的主进程启动时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述加载模块包括:
第三判断子模块,用于判断所述加载信息为延迟加载信息;
第二调整子模块,用于在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
第三加载子模块,用于在所述用户界面接收到应用程序的运行请求时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述加载模块包括:
第四判断子模块,用于判断所述加载信息为延迟加载信息;
第四加载子模块,用于在应用程序的主进程启动后,间隔预设的延迟时间时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
优选的,所述运行模块包括:
创建子模块,用于按照所述插件类型信息创建对应的插件代理;
第一发送子模块,用于由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中;
第一运行子模块,用于在所述插件类型信息对应的进程中按照所述参数信息运行插件文件中对应的函数。
优选的,所述插件类型信息包括进程内插件信息和进程外插件信息中的至少一种信息;
所述进程内插件信息对应的插件代理为进程内插件代理,所述进程内插件信息对应的进程为所述应用程序的主进程;
所述进程外插件信息对应的插件代理为进程外插件代理,所述进程外插件信息对应的进程为独立的插件进程。
优选的,所述第一发送子模块包括:
第二发送子模块,用于由所述进程外插件代理通过进程间通信将运行所述插件所需的参数信息发送至所述独立的插件进程。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例将应用程序中指定的业务对象封装成插件,在该业务对象的业务功能和/或用户界面发生变化时,修改对应的插件即可,而无需对应用程序本身进行修改,大大降低了修改的工作量,大大降低了应用程序进行更新的时间及人力等成本。
本申请实施例可以将核心的业务功能和/或用户界面比较稳定(例如,修改频率低于某一个频率阈值)的业务对象封装成插件,该插件可以在应用程 序的主进程中加载并运行,以保证业务功能的执行效率。
本申请实施例可以将业务功能和/或用户界面随着开发的迭代而不断发生变化(例如,修改频率高于另一个频率阈值)的业务对象封装成插件,该插件可以在独立的插件进程中加载并运行,插件进程的崩溃不会导致应用程序的主程序的崩溃,在插件进程崩溃之后,应用程序的主程序还可以重新加载插件进程保证该业务功能的可用性以及应用程序运行的稳定性。
附图说明
图1是本申请的一种应用程序的运行方法实施例的步骤流程图;
图2是本申请的一种应用程序的运行装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,基于应用程序主进程的系统框架,将应用程序中核心功能稳定、业务功能变化较快或者用户界面变化较快的业务对象封装成插件(Plug-in),预先定义扩展接口,而该插件可以实现该扩展接口相应的业务功能,当应用程序主进程运行过程中调用扩展接口时便加载并运行实现了该扩展接口的插件。
参考图1,示出了本申请的一种应用程序的运行方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101、在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;
应用程序可以为能够实现某项或某几项业务功能的业务对象的集合,例如,具有视频数据(例如,流媒体)播放功能的视频播放器、具有网页浏览功能的浏览器,等等。
对于不同业务领域而言,可以具有不同的业务对象,即具有业务领域特 征的对象。例如,对于应用程序而言,该业务对象可以为功能模块,该功能模块可以独立完成一定的功能。
应用程序一般具有可视的用户界面(User Interface,UI),以便与用户进行交互。例如,在视频播放器中,可以在用户界面中绘制不同的界面元素,使得用户可以对视频数据进行暂停、快进等操作。
基于应用程序的运行请求,例如,用户通过鼠标双击或者触屏点击应用程序的可执行文件或可执行文件的快捷方式,可以由应用程序所在的操作系统为该应用程序创建一个新的进程(Process),以便使该进程运行完成指定的业务功能,即每一个应用程序可以运行于独立的进程中。
一个进程可以建立一个或多个附属进程,相对而言,建立附属进程的那个进程可以称为主进程,而该附属进程可以称为子进程。
应用本申请实施例,一方面,可以预先将应用程序本身所具有的一个或多个业务对象封装成一个或多个插件(即一种遵循一定规范的应用程序接口编写出来的程序),并定义对应的扩展接口。
则在本申请实施例中,应用程序的主程序可以为应用程序除封装成插件的业务对象之外,剩下的业务对象所对应的进程。
在一种情形中,本申请实施例可以将核心的业务功能和/或用户界面比较稳定(例如,修改频率低于某一个频率阈值)的业务对象封装成插件,该插件可以在应用程序的主进程中加载并运行,以保证业务功能的执行效率。
例如,对于视频播放器,声道(如左声道、右声道)设置等业务功能比较稳定,因此,可以将实现该声道设置等业务功能的业务对象封装成插件,在视频播放器的主进程中加载并运行。
在另外一种情形中,本申请实施例可以将业务功能和/或用户界面随着开发的迭代而不断发生变化(例如,修改频率高于另一个频率阈值)的业务对象封装成插件,该插件可以在独立的插件进程中加载并运行,插件进程的崩溃不会导致应用程序的主程序的崩溃,在插件进程崩溃之后,应用程序的主程序还可以重新加载插件进程保证该业务功能的可用性以及应用程序运行的稳定性。
例如,对于视频播放器,网速测速等业务对象由于测速方式可能经常变化,因此,可以将实现该网速测速等业务功能的业务对象封装成插件,在独立的插件进程中加载并运行。
需要说明的是,对于第三方的插件,由于开发时可能存在兼容性问题,使得运行时可能存稳定性在问题,因此,第三方的插件也可以加载到独立的插件进程中运行。
当然,上述插件封装方式只是作为示例,在实施本申请实施例时,可以根据实际情况设置其他插件封装方式,本申请实施例对此不加以限制。另外,除了上述插件封装方式外,本领域技术人员还可以根据实际需要采用其它插件封装方式,例如,对于视频播放器,声道设置等业务功能也可以不封装成插件而直接在主进程中加载并运行,也可以封装成插件在独立的插件进程中加载并运行,本申请实施例对此也不加以限制。
本申请实施例将应用程序中指定的业务对象封装成插件,在该业务对象的业务功能和/或用户界面发生变化时,修改对应的插件即可,而无需对应用程序本身进行修改,大大降低了修改的工作量,大大降低了应用程序进行更新的时间及人力等成本。
应用本申请实施例,另一方面,可以预先将配置插件所需的信息写入配置文件中。
在具体实现中,配置文件可以包括配置插件所需的加载信息和扩展信息。
其中,加载信息可以记录配置插件如何加载的信息。
在本申请的一种优选实施例中,所述加载信息可以包括立即加载信息和延迟加载信息中的至少一种信息。
其中,立即加载信息可以表示该立即加载信息对应的插件在应用程序的主进程启动时加载。
例如,对于视频播放器中封装读写数据库等业务功能的插件,由于该数据库读写功能可以为其他业务对象所依赖的一个主要功能,因此,可以在应用程序的主进程启动时加载。
延迟加载信息可以表示该延迟加载信息对应的插件在应用程序的用户界面中接收到应用程序的运行请求时加载,或者,表示该延迟加载信息对应的插件在应用程序的主进程启动后,间隔预先设定的延迟时间时加载。
例如,对于视频播放器中网络测速等业务功能的插件,由于该网络测速功能可以为用户需求的功能,因此,可以接收到应用程序的运行请求时加载。
扩展信息可以记录配置插件如何运行的信息。
在本申请的一种优选实施例中,所述扩展信息可以包括插件类型信息、插件路径信息和用户界面参数信息中的至少一种信息。
其中,插件类型信息可以为定义插件类型的信息,进一步而言,该插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息;进程内插件信息可以为表示该插件的类型为进程内插件,可以在应用程序的主进程中加载并运行的信息;进程外插件信息可以表示该插件的类型为进程外插件,可以在独立的插件进程中加载并运行的信息。
插件路径信息可以为定义插件文件路径的信息。
用户界面参数信息可以为定义调整用户界面所需参数的信息。
需要说明的是,是否需要定义用户界面参数信息可以取决于插件本身;如果插件需要调整应用程序的用户界面,则可以定义用户界面参数信息;例如,对于视频播放器中封装有网速测速等业务功能的插件,由于该网络测速操作可以由用户发起,因此,可以在用户界面绘制对应的界面元素,则可以设置用户界面参数信息。
如果插件不需要调整应用程序的用户界面,则可以不定义用户界面参数信息;例如,对于视频播放器中封装读写数据库等业务功能的插件,由于该读写数据库操作可以不与用户发生交互,因此,无需在用户界面绘制对应的界面元素,则可以不用定义用户界面参数信息,即用户界面参数信息可以为空。
为使本领域技术人员更好地理解本申请实施例,以下通过一个配置文件的示例来进行说明。


在示例中,pluginConfig可以标识该文件为配置文件。
其中,immediate_plugin可以为立即加载信息,delay_plugin可以为延迟加载信。
extension可以表示扩展信息,该扩展信息可以包括用于标识应用程序的扩展接口的的point_id(即扩展接口标识信息),用于标识插件的extension_id(即插件标识信息),dll可以为插件路径信息,inner可以为插件类型信息,params可以为用户界面参数信息。
需要说明的是,本领域技术人员可以根据实际情况对某个插件设定对应的配置文件,例如,某个插件可以配置立即加载信息,也可以配置延时加载信息;可以配置用户界面参数信息,也可以不配置用户界面参数信息;可以配置进程内插件信息,也可以配置进程外插件信息,本申请实施例对此不加以限制。
步骤102、按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;
在应用程序的主进程运行时,可以通过扩展接口标识信息和插件标识信息的对应关系,扫描出实现了某个扩展接口的一个或多个插件,则可以按照配置信息中的加载信息和扩展信息加载插件。
在本申请的一种优选实施例中,步骤102可以包括如下子步骤:
子步骤S11、判断所述加载信息为立即加载信息;
子步骤S12、在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
子步骤S13、在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
本申请实施例中,在配置文件中定义了某个插件的立即加载信息和用户界面参数信息的情况下,该插件可以在应用程序的主进程启动时,按照配置文件中的用户界面参数信息,通过扩展接口调整应用程序的用户界面。
根据扩展信息中的插件类型信息判断插件的类型,在对应的进程中根据插件路径信息指示的路径加载插件文件。
在具体实现中,所述插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息。
所述进程内插件信息对应的进程可以为所述应用程序的主进程,则该插件可以在应用程序的主进程中进行加载。
所述进程外插件信息对应的进程可以为独立的插件进程,则该插件可以在独立的插件进程中进行加载。
在本申请的一种优选实施例中,步骤102可以包括如下子步骤:
子步骤S21、判断所述加载信息为立即加载信息;
子步骤S22、在应用程序的主进程启动时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
本申请实施例中,在配置文件中定义了某个插件立即加载信息的情况下,该插件可以在应用程序的主进程在启动时,根据扩展信息中的插件类型信息判断插件的类型,在对应的进程中根据插件路径信息指示的路径加载插件文件。
在具体实现中,所述插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息。
所述进程内插件信息对应的进程可以为所述应用程序的主进程,则该插件可以在应用程序的主进程中进行加载。
所述进程外插件信息对应的进程可以为独立的插件进程,则该插件可以在独立的插件进程中进行加载。
在本申请的一种优选实施例中,步骤102可以包括如下子步骤:
子步骤S31、判断所述加载信息为延时加载信息;
子步骤S32、在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
子步骤S33、在所述用户界面接收到应用程序的运行请求时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
本申请实施例中,在配置文件中定义了某个插件的延时加载信息和用户界面参数信息的情况下,可以在应用程序的主进程在启动时按照配置文件中的用户界面参数信息通过扩展接口调整应用程序的用户界面,然后等待应用程序的运行请求。
在应用程序修改后的用户界面接收到应用程序的运行请求时,应用程序根据扩展信息中的插件类型信息判断插件的类型,在插件类型信息对应的进程中根据插件路径信息指示的路径加载插件文件。
在具体实现中,所述插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息。
所述进程内插件信息对应的进程可以为所述应用程序的主进程,则该插件可以在应用程序的主进程中进行加载。
所述进程外插件信息对应的进程可以为独立的插件进程,则该插件可以在独立的插件进程中进行加载。
例如,对于视频播放器,某个插件封装有可以实现网速测速等业务功能的业务对象,相应地可以为该业务对象定义一个扩展接口标识为point_id=“main_menu”的扩展接口,该插件的插件文件路径为c:\my_main_menu.dll, 该插件的标识为extension_id=“my_main_menu”,该插件需要在插件进程中加载,用户界面参数信息中需要的位置信息为width(宽度)=20(像素),height(高度)=20(像素),图标的路径为image=“c:\a.bmp”,标题信息为name=“测速”,那么配置文件中对该插件的定义可以如下:

在应用程序启动时,在配置文件中查找扩展接口标识为point_id=“main_menu”的扩展接口对应的插件标识为extension_id=“my_main_menu”的插件,根据<delay_plugin>可以判断加载信息为延迟加载信息,通过扩展接口标识为point_id=“main_menu”的扩展接口,按照用户界面参数信息中<params width="20"height="20"image=“c:\a.bmp”name=“次数”/>,把标题“测速”和图标a.bmp按宽度×高度=20像素×20像素的规格添加到用户界面的菜单中。
当用户点击菜单中的“测速”,相当于发出应用程序的运行请求,则应用程序可以根据插件类型信息inner="true"判断该插件的类型为进程外插件,相对地,若插件类型信息inner="false"则可以判断该插件的类型为进程内插件,在独立插件进程中根据“dll="c:\my_main_menu.dll”指示的路径加载插件文件。
在本申请的一种优选实施例中,步骤102可以包括如下子步骤:
子步骤S41、判断所述加载信息为延时加载信息;
子步骤S42、在应用程序的主进程启动后,间隔预设的延迟时间时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
为了减少加载插件对应用程序的主进程加载的影响,快速应用程序的主进程的启动速度,可以为插件预先设置延迟加载的时间。
本申请实施例中,在配置文件中定义了某个插件延时加载信息的情况下,该对于设置了延迟加载时间的插件,在应用程序的主程序启动后,间隔预先设置的延迟时间时,根据扩展信息中的插件类型信息判断插件的类型,在对应的进程中根据插件路径信息指示的路径加载插件文件。
例如,对于视频播放器中封装有截图业务功能的插件,可以预先为该插件设置延迟加载的时间(如1秒、2秒),该插件在应用程序的主进程在启动后,到了预先设置的延迟加载时间(如1秒、2秒)时,应用程序根据扩展信息中的插件类型信息判断插件的类型,在插件类型信息对应的进程中根据插件路径信息指示的路径加载插件文件。
需要说明的是,本领域技术人员可以根据实际情况对封装有不同的业务功能的插件设置延迟加载时间,如可以对封装有测速业务功能的插件设置延迟加载时间,也可以不对封装有截图业务功能的插件设置延迟加载时间,对于可以对哪些插件设置延迟加载的时间,本申请实施例不加以限制;同时,本申请实施例对设置的延迟加载的时间也不加以限制,如本领域技术人员可以根据实际情况把延迟加载时间设置为5秒、10秒等等。
在具体实现中,所述插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息。
所述进程内插件信息对应的进程可以为所述应用程序的主进程,则该插件可以在应用程序的主进程中进行加载。
所述进程外插件信息对应的进程可以为独立的插件进程,则该插件可以在独立的插件进程中进行加载。
步骤103、按照所述扩展信息运行所述插件;
在插件类型对应的进程中加载插件文件后,可以按照配置文件中的扩展 信息运行插件。
在本申请的一种优选实施例中,步骤103可以包括如下子步骤:
子步骤S51、按照所述插件类型信息创建对应的插件代理;
在具体实现中,所述插件类型信息包括进程内插件信息和进程外插件信息中的至少一种信息;
所述进程内插件信息对应的插件代理可以为进程内插件代理,所述进程外插件信息对应的插件代理可以为进程外插件代理;插件代理(包括进程内代理和进程外代理)可以为封装插件实现的接口的类,可以负责将插件接口调用转发(调用)给实际的插件去执行,若为进程内插件直接加载插件文件,然后调用对应的接口。
子步骤S52、由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中;
在本申请的一种优选实施例中,若插件代理为进程内插件代理,则可以将运行所述插件所需的参数信息(例如扩展信息)发送到应用程序的主进程中。
在本申请的另一种优选实施例中,子步骤S52可以包括如下子步骤:
子步骤S521、由所述进程外插件代理通过进程间通信将运行所述插件所需的参数信息发送至所述独立的插件进程。
若插件代理为进程外插件代理,则可以将运行所述插件所需的参数信息封装成数据包,具体可以包括包id(包的类型),参数(扩展信息、执行扩展接口的参数)、接口名称等等。
将数据包通过进程间通信(Inter-Process Communication,即IPC)发送到独立的插件进程中。
子步骤S53、在所述插件类型信息对应的进程中按照所述参数信息运行插件文件中对应的函数。
在具体实现中,所述插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息。
所述进程内插件信息对应的进程可以为所述应用程序的主进程,则可以 在应用程序的主进程运行插件文件中对应的函数,并获得运行函数的结果。
所述进程外插件信息对应的进程可以为独立的插件进程,则可以在插件进程中运行插件文件中对应的函数,并将运行结果通过进程间通信传回给进程外插件代理,进程外插件代理再将运行结果返回给应用程序的主进程。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
参考图2,示出了本申请的一种应用程序的运行装置实施例的结构框图,具体可以包括如下模块:
查找模块201,用于在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;
加载模块202,用于按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;
运行模块203,用于按照所述扩展信息运行所述插件;
其中,所述插件封装有所述应用程序中指定的业务对象。
在本申请的一种优选实施例中,所述加载信息可以包括立即加载信息和延迟加载信息中的至少一种。
在本申请的一种优选实施例中,所述扩展信息可以包括插件类型信息、插件路径信息和用户界面参数信息中的至少一种信息。
在本申请的一种优选实施例中,加载模块202可以包括如下子模块:
第一判断子模块,用于判断所述加载信息为立即加载信息;
第一调整子模块,用于在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
第一加载子模块,用于在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
在本申请的一种优选实施例中,加载模块202可以包括如下子模块:
第二判断子模块,用于判断所述加载信息为立即加载信息;
第二加载子模块,用于在应用程序的主进程启动时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
在本申请的一种优选实施例中,加载模块202可以包括如下子模块:
第三判断子模块,用于判断所述加载信息为延迟加载信息;
第二调整子模块,用于在应用程序的主进程启动时,按照所述用户界面参数信息,通过所述扩展接口调整所述应用程序的用户界面;
第三加载子模块,用于在所述用户界面接收到应用程序的运行请求时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
在本申请的一种优选实施例中,加载模块202可以包括如下子模块:
第四判断子模块,用于判断所述加载信息为延迟加载信息;
第四加载子模块,用于在应用程序的主进程启动后,间隔预设的延迟时间时,在所述插件类型信息对应的进程中加载所述插件路径信息指示的插件文件。
在本申请的一种优选实施例中,运行模块203可以包括如下子模块:
创建子模块,用于按照所述插件类型信息创建对应的插件代理;
第一发送子模块,用于由所述插件代理将运行所述插件所需的参数信息发送至所述插件类型信息对应的进程中;
第一运行子模块,用于在所述插件类型信息对应的进程中按照所述参数信息运行插件文件中对应的函数。
在本申请实施例的一种优选实施例中,所述插件类型信息可以包括进程内插件信息和进程外插件信息中的至少一种信息;
所述进程内插件信息对应的插件代理为进程内插件代理,所述进程内插件信息对应的进程为所述应用程序的主进程;
所述进程外插件信息对应的插件代理为进程外插件代理,所述进程外插 件信息对应的进程为独立的插件进程。
在本申请的一种优选实施例中,所述第一发送子模块可以包括以下子模块:
第二发送子模块,用于由所述进程外插件代理通过进程间通信将运行所述插件所需的参数信息发送至所述独立的插件进程。
由于所述装置实施例基本相应于前述图1所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读 存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种应用程序的运行方法和一种应用程序的运行装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

一种应用程序的运行方法及装置.pdf_第1页
第1页 / 共18页
一种应用程序的运行方法及装置.pdf_第2页
第2页 / 共18页
一种应用程序的运行方法及装置.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种应用程序的运行方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种应用程序的运行方法及装置.pdf(18页珍藏版)》请在专利查询网上搜索。

本申请实施例提供了一种应用程序的运行方法及装置,其中,所述方法包括:在应用程序的主进程启动时,查找预置的扩展接口所对应的配置文件;所述配置文件包括配置插件所需的加载信息和扩展信息;按照所述加载信息和扩展信息通过所述扩展接口加载所述插件;按照所述扩展信息运行所述插件;其中,所述插件封装有所述应用程序中指定的业务对象。本申请可以提高应用程序主进程的稳定性和降低应用程序的更新成本。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1