CN103927180B - 一种基于安卓系统的功能插件的实现方法及其系统 - Google Patents
一种基于安卓系统的功能插件的实现方法及其系统 Download PDFInfo
- Publication number
- CN103927180B CN103927180B CN201410161342.1A CN201410161342A CN103927180B CN 103927180 B CN103927180 B CN 103927180B CN 201410161342 A CN201410161342 A CN 201410161342A CN 103927180 B CN103927180 B CN 103927180B
- Authority
- CN
- China
- Prior art keywords
- feature card
- self
- assembly
- defined view
- function
- 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.)
- Active
Links
Landscapes
- Telephone Function (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供了一种基于安卓系统的功能插件的实现方法,包括:所述组件或自定义view将所述资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;所述组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;所述组件或自定义view将功能插件中对应的类作为其在功能插件的代理,将生命周期函数委托给RemoteProxy远程代理;实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态,解决了安卓系统四大组件和自定义view插件化问题。本发明还提供了一种基于安卓系统的功能插件的系统。
Description
技术领域
本发明涉及安卓系统插件领域,尤其涉及一种基于安卓系统的功能插件的实现方法及其系统。
背景技术
随着终端设备的硬件配置越来越高,在软件开发中,为了方便对软件进行功能扩展,往往采用插件方式进行开发,将软件所能实现的一个一个功能封装在插件中,最后将各个插件加载到主程序中。但早期的安卓系统2.3,无法加载插件中复杂函数,特别是安卓四大组件和自定义view的插件化问题,安卓四大组件的生命周期由系统管理并需要定义在清单配置文件中,在插件里实现四大组件无办法被系统识别。
发明内容
针对现有技术的不足,本发明的目的在于提供一种解决安卓系统四大组件和自定义view插件化问题的基于安卓系统的功能插件的实现方法。
本发明的另外一个目的在于提供一种基于安卓系统的功能插件的系统。
为实现上述目的,本发明采用的技术方案如下:一种基于安卓系统的功能插件的实现方法,用以在安卓系统中加载安卓四大组件或自定义view的功能插件,所述安卓四大组件为:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,所述方法包括以下步骤:
S1、功能插件储存于资源目录中;
S2、功能插件初始化运行,所述组件或自定义view将所述资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;
S3、所述组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;
S4、所述组件或自定义view将步骤S3中功能插件中对应的类作为所述组件或自定义view在功能插件的代理,将所述组件或自定义view的生命周期函数委托给RemoteProxy远程代理;
S5、实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态。
进一步,所述方法还包括以下步骤:
所述组件或自定义view补充实现其超类的生命周期函数,并将本身的生命周期函数的实现委托给RemoteProxy远程代理;
所述RemoteProxy远程代理在其所获得的生命周期函数中调用已有实例的补充实现函数来组建实例超类生命函数,以实现间接对所述组件或自定义view的超类生命函数的调用。
进一步,所述方法还包括:生成功能插件的配置文件,所述配置文件中包括功能插件的调用接口;所述组件或自定义view通过调用接口连接功能插件。
为实现本发明的另一目的,本发明还采用如下技术方案:一种基于安卓系统的功能插件的系统,用以在安卓系统中加载安卓四大组件或自定义view的功能插件,所述安卓四大组件为:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,该系统包括:
功能插件,储存于资源目录中;
类加载器,功能插件初始化运行时,由组件或自定义view为每个功能插件所建立的;
RemoteProxy远程代理,用于获取组件或自定义view的生命周期函数,实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态;
组件或自定义view,用于将所述资源目录中存储的每个功能插件读取到内存中,并使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;将功能插件中对应的类作为组件或自定义view在功能插件的代理,将生命周期函数委托给RemoteProxy远程代理。
进一步,所述系统还包括:所述组件或自定义view补充实现其超类的生命周期函数,并将本身的生命周期函数的实现委托给RemoteProxy远程代理;
所述RemoteProxy远程代理在其所获得的生命周期函数中调用已有实例的补充实现函数来组建实例超类生命函数,以实现间接对所述组件或自定义view的超类生命函数的调用。
进一步,所述系统还包括:配置文件生成模块,用于生成功能插件的配置文件,所述配置文件中包括功能插件的调用接口;所述组件或自定义view通过调用接口连接功能插件。
相对于现有技术,本发明所述的技术方案通过功能插件储存于资源目录中,功能插件初始化运行,所述组件或自定义view将所述资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;所述组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;所述组件或自定义view将功能插件中对应的类作为所述组件或自定义view在功能插件的代理,将所述组件或自定义view的生命周期函数委托给RemoteProxy远程代理;实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态,解决了安卓系统四大组件或自定义view插件化问题。
为了充分地了解本发明的目的、特征和效果,以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明。
附图说明
图1是本发明基于安卓系统的功能插件的系统示意图;
图2是本发明基于安卓系统的功能插件的方法流程图。
具体实施方式
下面将结合附图以及具体实施方法来详细说明本发明,在本发明的示意性实施及说明用来解释本发明,但并不作为对本发明的限定。
如图1所示,一种基于安卓系统的功能插件的系统,用以在安卓系统中加载安卓四大组件或自定义view的功能插件,所述安卓四大组件为:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,该系统包括:
功能插件,储存于资源目录中;
类加载器,功能插件初始化运行时,由组件或自定义view为每个功能插件所建立的;
RemoteProxy远程代理,用于获取组件或自定义view的生命周期函数,实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态;
组件或自定义view,用于将所述资源目录中存储的每个功能插件读取到内存中,并使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;将功能插件中对应的类作为组件或自定义view在功能插件的代理,将生命周期函数委托给RemoteProxy远程代理。
配置文件生成模块,用于生成功能插件的配置文件,所述配置文件中包括功能插件的调用接口;所述组件或自定义view通过调用接口连接功能插件。
当所述功能插件中对应的类为超类时,所述组件或自定义view补充实现其超类的生命周期函数,并将本身的生命周期函数的实现委托给RemoteProxy远程代理;所述RemoteProxy远程代理在其所获得的生命周期函数中调用已有实例的补充实现函数来组建实例超类生命函数,以实现间接对所述组件或自定义view的超类生命函数的调用。
以Activity组件为例:
主程序的Activity组件放置在代码目录data/data下;功能插件放置在res/raw下;
主程序的Activity组件将res/raw下存储的功能插件读取到内存中,为每个功能插件对应的代理类创建并使用自定义的类加载器ClassLoader;
主程序的Activity组件使用类加载器ClassLoader将功能插件中对应的类通过反射调用方法构造实例,并将自身对象传递给实例;
主程序的Activity组件将功能插件中对应的类作为其在功能插件的代理ProxyActivity,将生命周期函数委托给RemoteProxy远程代理;
实例通过RemoteProxy远程代理使得功能插件中对应类的生命周期函数,以响应Activity组件生命周期的不同状态。
如图2所示,一种基于安卓系统的功能插件的实现方法,包括以下步骤:
S101:功能插件初始化运行,组件或自定义view将资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;
S102:组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;
S103:组件或自定义view将功能插件中对应的类作为其在功能插件的代理,将生命周期函数委托给RemoteProxy远程代理;
S104:实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态。
本发明所述的技术方案通过功能插件储存于资源目录中,功能插件初始化运行,所述组件或自定义view将所述资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;所述组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;所述组件或自定义view将功能插件中对应的类作为所述组件或自定义view在功能插件的代理,将所述组件或自定义view的生命周期函数委托给RemoteProxy远程代理;实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态,解决了安卓系统四大组件或自定义view插件化问题。
以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明构思在现有技术基础上通过逻辑分析、推理或者根据有限的实验可以得到的技术方案,均应该在由本权利要求书所确定的保护范围之中。
Claims (6)
1.一种基于安卓系统的功能插件的实现方法,用以在安卓系统中加载安卓四大组件或自定义view的功能插件,所述安卓四大组件为:Activity显示界面、Service服务、ContentProvider内容提供者、BroadcastReceiver广播接收器,其特征在于,所述方法包括以下步骤:
S1、功能插件储存于资源目录中;
S2、功能插件初始化运行,所述组件或自定义view将所述资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;
S3、所述组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;
S4、所述组件或自定义view将步骤S3中功能插件中对应的类作为所述组件或自定义view在功能插件的代理,将所述组件或自定义view的生命周期函数委托给RemoteProxy远程代理;
S5、实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态。
2.如权利要求1所述的功能插件的实现方法,其特征在于,所述方法还包括以下步骤:
所述组件或自定义view补充实现其超类的生命周期函数,并将本身的生命周期函数的实现委托给RemoteProxy远程代理;
所述RemoteProxy远程代理在其所获得的生命周期函数中调用已有实例的补充实现函数来组建实例超类生命函数,以实现间接对所述组件或自定义view的超类生命函数的调用。
3.如权利要求1所述的功能插件的实现方法,其特征在于,所述方法还包括:
生成功能插件的配置文件,所述配置文件中包括功能插件的调用接口;所述组件或自定义view通过调用接口连接功能插件。
4.一种基于安卓系统的功能插件的系统,用以在安卓系统中加载安卓四大组件或自定义view的功能插件,所述安卓四大组件为:Activity显示界面、Service服务、ContentProvider内容提供者、BroadcastReceiver广播接收器,其特征在于,该系统包括:
功能插件,储存于资源目录中;
类加载器,功能插件初始化运行时,由组件或自定义view为每个功能插件所建立的;
RemoteProxy远程代理,用于获取组件或自定义view的生命周期函数,实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态;
组件或自定义view,用于将所述资源目录中存储的每个功能插件读取到内存中,并使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;将功能插件中对应的类作为组件或自定义view在功能插件的代理,将生命周期函数委托给RemoteProxy远程代理。
5.如权利要求4所述的功能插件的系统,其特征在于,所述系统还包括:
所述组件或自定义view补充实现其超类的生命周期函数,并将本身的生命周期函数的实现委托给RemoteProxy远程代理;
所述RemoteProxy远程代理在其所获得的生命周期函数中调用已有实例的补充实现函数来组建实例超类生命函数,以实现间接对所述组件或自定义view的超类生命函数的调用。
6.如权利要求4所述的功能插件的系统,其特征在于,所述系统还包括:
配置文件生成模块,用于生成功能插件的配置文件,所述配置文件中包括功能插件的调用接口;所述组件或自定义view通过调用接口连接功能插件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410161342.1A CN103927180B (zh) | 2014-04-21 | 2014-04-21 | 一种基于安卓系统的功能插件的实现方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410161342.1A CN103927180B (zh) | 2014-04-21 | 2014-04-21 | 一种基于安卓系统的功能插件的实现方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927180A CN103927180A (zh) | 2014-07-16 |
CN103927180B true CN103927180B (zh) | 2017-02-15 |
Family
ID=51145412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410161342.1A Active CN103927180B (zh) | 2014-04-21 | 2014-04-21 | 一种基于安卓系统的功能插件的实现方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927180B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216741A (zh) * | 2014-08-25 | 2014-12-17 | 华中科技大学 | 基于APK动态加载的Android插件化实现方法、装置及交互方法 |
CN107203524A (zh) * | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种打包APK文件的方法、加载Bundle文件的方法及系统 |
CN105893094B (zh) * | 2016-03-31 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 应用程序插件化的实现方法和装置 |
CN105843654A (zh) * | 2016-04-14 | 2016-08-10 | 广州市久邦数码科技有限公司 | 一种动态加载广告sdk的实现方法及其实现系统 |
CN108228266B (zh) * | 2016-12-14 | 2021-08-10 | 阿里巴巴集团控股有限公司 | 一种Android插件框架下不同插件间启动Fragment组件的方法和装置 |
CN108255545B (zh) * | 2016-12-28 | 2022-09-02 | 阿里巴巴集团控股有限公司 | 组件间的功能调用方法、装置及组件化架构系统 |
WO2019047009A1 (zh) * | 2017-09-05 | 2019-03-14 | 深圳欣锐科技股份有限公司 | 一种基于处理器的数据处理方法和装置 |
CN110389791B (zh) * | 2019-05-22 | 2023-01-24 | 百度在线网络技术(北京)有限公司 | 组件调度方法、装置、设备及存储介质 |
CN111142972B (zh) * | 2019-12-27 | 2021-10-01 | 京东数字科技控股有限公司 | 用于扩展应用程序的功能的方法、装置、系统及介质 |
CN114528048A (zh) * | 2022-02-18 | 2022-05-24 | Oppo广东移动通信有限公司 | 应用执行方法、应用执行架构、电子设备及存储介质 |
CN116775172B (zh) * | 2023-08-25 | 2023-11-03 | 成都太阳高科技有限责任公司 | 一种通过反射实现Android获取数据的方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000079387A1 (en) * | 1999-06-23 | 2000-12-28 | Commonsense Software, Ltd. | Organizer interface system and method |
CN102609267A (zh) * | 2012-02-16 | 2012-07-25 | 深圳市酷开网络科技有限公司 | 基于安卓浏览器的插件管理方法及系统 |
CN102830992A (zh) * | 2012-07-31 | 2012-12-19 | 北京奇虎科技有限公司 | 插件加载方法及系统 |
CN102880456A (zh) * | 2012-07-31 | 2013-01-16 | 北京奇虎科技有限公司 | 一种创建插件方法及装置 |
CN103164239A (zh) * | 2012-12-11 | 2013-06-19 | 广东电网公司电力科学研究院 | 基于微网可视化平台的插件实现方法 |
CN103345427A (zh) * | 2013-07-15 | 2013-10-09 | 四川公用信息产业有限责任公司 | 基于Android消息处理机制的视图切换系统及方法 |
-
2014
- 2014-04-21 CN CN201410161342.1A patent/CN103927180B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000079387A1 (en) * | 1999-06-23 | 2000-12-28 | Commonsense Software, Ltd. | Organizer interface system and method |
CN102609267A (zh) * | 2012-02-16 | 2012-07-25 | 深圳市酷开网络科技有限公司 | 基于安卓浏览器的插件管理方法及系统 |
CN102830992A (zh) * | 2012-07-31 | 2012-12-19 | 北京奇虎科技有限公司 | 插件加载方法及系统 |
CN102880456A (zh) * | 2012-07-31 | 2013-01-16 | 北京奇虎科技有限公司 | 一种创建插件方法及装置 |
CN103164239A (zh) * | 2012-12-11 | 2013-06-19 | 广东电网公司电力科学研究院 | 基于微网可视化平台的插件实现方法 |
CN103345427A (zh) * | 2013-07-15 | 2013-10-09 | 四川公用信息产业有限责任公司 | 基于Android消息处理机制的视图切换系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103927180A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927180B (zh) | 一种基于安卓系统的功能插件的实现方法及其系统 | |
CN108572818A (zh) | 一种用户界面渲染方法及装置 | |
CN111767143A (zh) | 交易数据处理方法、装置、设备及系统 | |
CN102902537B (zh) | 基于FastCGI和HTML模板的嵌入式WEB MVC开发框架 | |
CN109062617A (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
CN113467972B (zh) | 通信接口构造方法、装置以及计算机设备、存储介质 | |
WO2014206289A1 (en) | Method and apparatus for outputting log information | |
CN111767144B (zh) | 交易数据的交易路由确定方法、装置、设备及系统 | |
CN101261600B (zh) | 一种软件测试装置及测试软件的设计方法 | |
CN111208988B (zh) | 单片机文件系统编写方法及单片机系统 | |
CN106873915A (zh) | 一种基于rdma注册内存块的数据传输方法和装置 | |
CN102929951B (zh) | 一种数据绑定批量入库方法和装置 | |
CN102760075A (zh) | 一种实现智能卡应用部署的方法及系统 | |
CN111506552A (zh) | 一种树状结构的动态数据库设计方法及系统 | |
CN103501341A (zh) | 一种Web服务的创建方法及装置 | |
CN109522507B (zh) | 一种网页组件统一管理的方法 | |
CN104714923A (zh) | 一种实现设备共享的方法和装置 | |
CN103336798A (zh) | 嵌入式网络设备的虚拟化数据访问系统及方法 | |
CN107807884B (zh) | 一种模块化管理错误码的方法 | |
CN105224340A (zh) | 业务单据注入附件管理的方法与系统 | |
CN103198140A (zh) | 一种数据库存储系统及数据存储方法 | |
CN114969190A (zh) | 可扩展的区块链数据导出工具 | |
CN101246421A (zh) | 一种基于工作流引擎实现的通用框架 | |
CN113626222A (zh) | 消息处理方法、装置、计算机设备和存储介质 | |
CN209590838U (zh) | 一种SoC系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |