CN103927180A - 一种基于安卓***的功能插件的实现方法及其*** - Google Patents

一种基于安卓***的功能插件的实现方法及其*** Download PDF

Info

Publication number
CN103927180A
CN103927180A CN201410161342.1A CN201410161342A CN103927180A CN 103927180 A CN103927180 A CN 103927180A CN 201410161342 A CN201410161342 A CN 201410161342A CN 103927180 A CN103927180 A CN 103927180A
Authority
CN
China
Prior art keywords
self
feature card
defined view
function
life cycle
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.)
Granted
Application number
CN201410161342.1A
Other languages
English (en)
Other versions
CN103927180B (zh
Inventor
邓裕强
黄爱华
梁国盛
区永强
欧经文
李存宽
周超红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Jiubang Digital Technology Co Ltd
Original Assignee
Guangzhou Jiubang Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Jiubang Digital Technology Co Ltd filed Critical Guangzhou Jiubang Digital Technology Co Ltd
Priority to CN201410161342.1A priority Critical patent/CN103927180B/zh
Publication of CN103927180A publication Critical patent/CN103927180A/zh
Application granted granted Critical
Publication of CN103927180B publication Critical patent/CN103927180B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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服务、ContentProvider内容提供者、BroadcastReceiver广播接收器,所述方法包括以下步骤:
S1、功能插件储存于资源目录中;
S2、功能插件初始化运行,所述组件或自定义view将所述资源目录中存储的功能插件读取到内存中,为每个功能插件建立类加载器;
S3、所述组件或自定义view使用类加载器将功能插件中对应的类名反射构造实例,并将自身对象传递给实例;
S4、所述组件或自定义view将步骤S3中功能插件中对应的类作为所述组件或自定义view在功能插件的代理,将所述组件或自定义view的生命周期函数委托给RemoteProxy远程代理;
S5、实例通过RemoteProxy远程代理使功能插件获得对应类的生命周期函数,以响应所述组件或自定义view生命周期的不同状态。
进一步,所述方法还包括以下步骤:
所述组件或自定义view补充实现其超类的生命周期函数,并将本身的生命周期函数的实现委托给RemoteProxy远程代理;
所述RemoteProxy远程代理在其所获得的生命周期函数中调用已有实例的补充实现函数来组建实例超类生命函数,以实现间接对所述组件或自定义view的超类生命函数的调用。
进一步,所述方法还包括:生成功能插件的配置文件,所述配置文件中包括功能插件的调用接口;所述组件或自定义view通过调用接口连接功能插件。
为实现本发明的另一目的,本发明还采用如下技术方案:一种基于安卓***的功能插件的***,用以在安卓***中加载安卓四大组件和自定义view的功能插件,所述安卓四大组件为:Activity显示界面、Service服务、ContentProvider内容提供者、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服务、ContentProvider内容提供者、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通过调用接口连接功能插件。
CN201410161342.1A 2014-04-21 2014-04-21 一种基于安卓***的功能插件的实现方法及其*** Active CN103927180B (zh)

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 true CN103927180A (zh) 2014-07-16
CN103927180B 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)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216741A (zh) * 2014-08-25 2014-12-17 华中科技大学 基于APK动态加载的Android插件化实现方法、装置及交互方法
CN105843654A (zh) * 2016-04-14 2016-08-10 广州市久邦数码科技有限公司 一种动态加载广告sdk的实现方法及其实现***
CN105893094A (zh) * 2016-03-31 2016-08-24 百度在线网络技术(北京)有限公司 应用程序插件化的实现方法和装置
CN107203524A (zh) * 2016-03-16 2017-09-26 阿里巴巴集团控股有限公司 一种打包APK文件的方法、加载Bundle文件的方法及***
CN108228266A (zh) * 2016-12-14 2018-06-29 阿里巴巴集团控股有限公司 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
CN108255545A (zh) * 2016-12-28 2018-07-06 阿里巴巴集团控股有限公司 组件间的功能调用方法、装置及组件化架构***
CN108701030A (zh) * 2017-09-05 2018-10-23 深圳欣锐科技股份有限公司 一种基于处理器的数据处理方法和装置
CN110389791A (zh) * 2019-05-22 2019-10-29 百度在线网络技术(北京)有限公司 组件调度方法、装置、设备及存储介质
CN111142972A (zh) * 2019-12-27 2020-05-12 京东数字科技控股有限公司 用于扩展应用程序的功能的方法、装置、***及介质
CN114528048A (zh) * 2022-02-18 2022-05-24 Oppo广东移动通信有限公司 应用执行方法、应用执行架构、电子设备及存储介质
CN116775172A (zh) * 2023-08-25 2023-09-19 成都太阳高科技有限责任公司 一种通过反射实现Android获取数据的方法及***

Citations (6)

* Cited by examiner, † Cited by third party
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消息处理机制的视图切换***及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
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消息处理机制的视图切换***及方法

Cited By (15)

* Cited by examiner, † Cited by third party
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 百度在线网络技术(北京)有限公司 应用程序插件化的实现方法和装置
CN105893094A (zh) * 2016-03-31 2016-08-24 百度在线网络技术(北京)有限公司 应用程序插件化的实现方法和装置
CN105843654A (zh) * 2016-04-14 2016-08-10 广州市久邦数码科技有限公司 一种动态加载广告sdk的实现方法及其实现***
CN108228266A (zh) * 2016-12-14 2018-06-29 阿里巴巴集团控股有限公司 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
CN108255545A (zh) * 2016-12-28 2018-07-06 阿里巴巴集团控股有限公司 组件间的功能调用方法、装置及组件化架构***
CN108701030A (zh) * 2017-09-05 2018-10-23 深圳欣锐科技股份有限公司 一种基于处理器的数据处理方法和装置
CN108701030B (zh) * 2017-09-05 2022-05-27 深圳欣锐科技股份有限公司 一种基于处理器的数据处理方法和装置
CN110389791A (zh) * 2019-05-22 2019-10-29 百度在线网络技术(北京)有限公司 组件调度方法、装置、设备及存储介质
CN111142972A (zh) * 2019-12-27 2020-05-12 京东数字科技控股有限公司 用于扩展应用程序的功能的方法、装置、***及介质
CN111142972B (zh) * 2019-12-27 2021-10-01 京东数字科技控股有限公司 用于扩展应用程序的功能的方法、装置、***及介质
CN114528048A (zh) * 2022-02-18 2022-05-24 Oppo广东移动通信有限公司 应用执行方法、应用执行架构、电子设备及存储介质
CN116775172A (zh) * 2023-08-25 2023-09-19 成都太阳高科技有限责任公司 一种通过反射实现Android获取数据的方法及***
CN116775172B (zh) * 2023-08-25 2023-11-03 成都太阳高科技有限责任公司 一种通过反射实现Android获取数据的方法及***

Also Published As

Publication number Publication date
CN103927180B (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN103927180A (zh) 一种基于安卓***的功能插件的实现方法及其***
CA2768752C (en) Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform
CN109062617A (zh) 一种支持多类型设备的平台的应用方法、移动终端
CN105487905A (zh) 一种混合应用的更新方法和装置
CN106331135A (zh) 一种部分界面更新方法、***、客户端和服务端
CN111142971A (zh) 一种适应传统应用云化的云平台应用就绪检查方法
CN103777981A (zh) 一种适用于x86架构的多操作***远程加载实现方法
CN105204871A (zh) 一种插件式开发方法和装置
CN104636154B (zh) 应用程序安装方法及装置
CN117075930B (zh) 一种计算框架管理***
CN105656947A (zh) 一种交易中间件与第三方***交互的方法、装置和***
CN110928935A (zh) 数据的访问命令处理方法、装置和***
CN106230977A (zh) 一种客户端功能加载方法、***、客户端和服务端
CN105550007A (zh) 用于移动终端的控制方法、装置和移动终端
CN104144202A (zh) Hadoop分布式文件***的访问方法、***和装置
CN103647811A (zh) 一种实现应用访问后台服务的方法和装置
CN111722857A (zh) 软件开发工具包的更新方法、装置、电子设备及存储介质
CN106775916B (zh) 减小应用安装包的方法、装置及电子设备
CN109522507B (zh) 一种网页组件统一管理的方法
CN109783132B (zh) 一种可适应***单体化及分布式化的实现方法及装置
CN116860301A (zh) 芯片测试机的fpga配置方法及装置
CN103530159A (zh) 无线通信模块的升级方法和***
CN102867018B (zh) 一种数据库***中线程间的模拟信号通信方法
CN105224340A (zh) 业务单据注入附件管理的方法与***
CN113342376B (zh) 一种针对物联网设备的操作***进行升级的方法及装置

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