CN111352611A - 一种Android应用中实现UI与数据分离的方法 - Google Patents
一种Android应用中实现UI与数据分离的方法 Download PDFInfo
- Publication number
- CN111352611A CN111352611A CN202010144060.6A CN202010144060A CN111352611A CN 111352611 A CN111352611 A CN 111352611A CN 202010144060 A CN202010144060 A CN 202010144060A CN 111352611 A CN111352611 A CN 111352611A
- Authority
- CN
- China
- Prior art keywords
- uiservice
- application
- callback
- data
- terminal
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Telephone Function (AREA)
Abstract
本发明公开了一种Android应用中实现UI与数据分离的方法,包括应用端和UIservice端,创建UIService端的AIDL文件,添加SrvInterface和ITaskCallback;应用端调用UIService端中的实现方法;UIService端在应用启动时调用bindService或unbindService,应用注册回调以响应UIService端的数据请求;数据更新时,应用端调用registerCallback或者unregisterCallback方法;结束时,应用与UIService端解绑。采用应用UI与数据分离的方法,减少资源冗余和工作量重复,提高开发效率和迭代效率。
Description
技术领域
本发明涉及Android应用开发技术领域,具体的说,是一种Android应用中实现UI与数据分离的方法。
背景技术
近年来,随着信息化和智能化的发展和普及,智能手机、智能电视、数码相机、智能手表、游戏机等嵌入式平台开始使用Android系统来进行各种系统应用的定制。由于在一般定制中,应用功能的实现需要单独定制菜单应用相关资源,不利于代码修改和可持续利用;而且会导致同一系统中不同应用间有重复的应用资源,开发人员重复工作量大。
发明内容
本发明的目的在于提供一种Android应用中实现UI与数据分离的方法,用于解决现有技术中应用资源重复、开发人员重复工作量大的问题。
本发明通过下述技术方案解决上述问题:
一种Android应用中实现UI与数据分离的方法,包括进程间通信的应用端和UIservice端,方法包括:
步骤S1:在UIService端定义各级菜单UI,不同的菜单UI设有唯一的DataTaye(数据类型)值;
步骤S2:创建UIService端的AIDL文件,进行UIService方法的接口定义,添加注册回调方法registerCallback、解除回调方法registerCallback的接口定义SrvInterface和ITaskCallback,用于应用端注册回调和解除回调;SrvInterface和ITaskCallback是注册回调和解除回调方法里封的接口。
步骤S3:创建UIService端实现AIDL的方法,UIService端和应用端采用相同的数据结构和相同格式的字符串,使用绑定方法onBind将Binder对象往返于应用端和UIService端;
步骤S4:创建应用端AIDL文件,应用端绑定UIService端,成功与UIService端建立连接后,收到UIService端返回的Binder对象并将Binder对象转为AIDL接口对象SrvInterface,通过SrvInterface调用UIService端中的实现方法;
步骤S5:UIService端在应用启动时调用方法onStart中的应用程序绑定服务bindService,在方法onStop中调用应用程序解绑服务unbindService,应用在打开菜单时注册回调以响应UIService端的数据请求;
步骤S6:应用端不同数据定义不同的唯一key值,当数据更新时,应用端接收到UIService端传来的ITaskCallback对象,调用该对象的registerCallback或者unregisterCallback方法,进行注册回调和解除回调,实现数据的更新;
步骤S7:应用在结束与UIService端连接的时候,调用unbindService方法进行解绑。
应用端与UIService端,通过bindService、AIDL(Android Interface DefinitionLanguage的缩写,即Android接口定义语言。用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。)实现进程间通信,不同的应用访问同一进程运行的UIService端的菜单服务。UIService端同一时间支持一个应用的菜单显示,如果正在显示一个应用的菜单显示时接收到第二个应用的显示请求,将取消当前菜单显示,显示第二个应用的菜单。
进一步地,所述步骤S4中通过调用gson开源库将UIService端返回的Binder对象并将Binder对象转为AIDL接口对象SrvInterface。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明中采用应用UI与数据分离的方法,定制统一UI,减少资源冗余和工作量重复,提高开发效率和迭代效率。
(2)应用端无需关心菜单(menu)UI的实现,只需要与菜单服务绑定,按照约定格式构建菜单内容、注册事件回调,避免各应用重复维护菜单实现的代码与资源导致的重复工作。
(3)在菜单UI风格或样式进行迭代、重构时,应用无需修改任何代码,菜单服务可以方便地统一进行修改,避免应用修改时进度不一致导致风格不统一。
附图说明
图1为本发明各应用与UIService端交互图;
图2为本发明应用端数据与UIService端显示分离交互图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,本发明公开了一种Android应用中实现UI与数据分离的方法,包括如下步骤:
步骤一,UIService端定义各类菜单UI,确定各种控件类型以及风格样式,每种控件类型都定义不同的DataType类型,如:跳转下级、跳转下级加选中的选项显示(只适用于下级菜单为单选列表)、单选及多选列表的单个控件、单选加跳转下级、Button(功能按钮)、有选择状态的Button、开关、可左右调整进度条、纯文本、提示全屏界面、选择确认全屏界面、节目搜索界面等。应用端根据需要设定data数据的DataType值,与UIService端匹配成功则填充到相应的布局,实现同类菜单界面样式风格的统一显示和不同菜单界面样式风格的差异化显示;
步骤二,应用端与UIService端,通过bindService、AIDL进程间通信的方式进行通信与交互,实现不同的应用访问同一进程运行的菜单服务端,如图1所示,具体实施步骤如下:
1.创建UIService端的AIDL文件,进行UIService端的接口定义,添加registerCallback和unregisterCallback方法的接口定义(SrvInterface)和接口定义(ITaskCallback),用于应用端注册回调和解除回调;
2.创建UIService端实现AIDL接口定义的方法,应用端和UIService端采用相同的数据结构,统一用gson开源库转的json格式字符串,通过onBind方法将Binder对象往返于应用端和UIService端。
3.创建应用端AIDL文件,应用端绑定UIService端,成功建立与UIService端连接后,拿到UIService端返回的Binder对象,通过调用gson开源库转为AIDL接口对象(SrvInterface),通过SrvInterface类型对象调用UIService中的实现方法;
4.当数据更新时,应用端接收到UIService端传来的ITaskCallback对象,调用将该对象的registerCallback或者unregisterCallback方法,进行注册回调和解除回调,以实现数据更新。
5.在需要结束与服务端连接的时候,调用unbindService方法进行解绑。
结合图2所示,应用端数据与UIService端显示分离的交互过程为:
应用端:
1.应用端不同数据定义不同的唯一key值,各应用在接收到菜单键时调用bindUIService去绑定服务,在service绑定成功后,根据不同的key值,通过AIDL进程间通信通过binder发送json数据到UIService端。
2.当数据更新时,UIService端会回调ITaskCallback接口里的数据更新、改变方法,应用端接收到UIService端传来的ITaskCallback对象,通过key来找到对应的Data,比较哪个数据有更新,对相应的数据更新做出响应。
UIService端:
1.UIService在应用启动调用onStart()中bindService,在onStop中unbindService,应用在按菜单键打开菜单时注册回调以响应UIService的数据请求。
2.UIService根据不同的DataType值,通过WindowsManger显示view的方式来呈现菜单,响应按键处理,在数据改变时通过回调给应用作相应的处理。
3.在UIService端处理按键,更新UI与数据,当数据更新时应用端通过注册的回调来响应。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.一种Android应用中实现UI与数据分离的方法,其特征在于,包括进程间通信的应用端和UIservice端,方法包括:
步骤S1:在UIService端定义各级菜单UI,不同的菜单UI设有唯一的DataTaye值;
步骤S2:创建UIService端的AIDL文件,进行UIService方法的接口定义,添加注册回调方法registerCallback、解除回调方法registerCallback的接口定义SrvInterface和ITaskCallback,用于应用端注册回调和解除回调;
步骤S3:创建UIService端实现AIDL的方法,UIService端和应用端采用相同的数据结构和相同格式的字符串,使用绑定方法onBind将Binder对象往返于应用端和UIService端;
步骤S4:创建应用端AIDL文件,应用端绑定UIService端,成功与UIService端建立连接后,收到UIService端返回的Binder对象并将Binder对象转为AIDL接口对象SrvInterface,通过SrvInterface调用UIService端中的实现方法;
步骤S5:UIService端在应用启动时调用方法onStart中的应用程序绑定服务bindService,在方法onStop中调用应用程序解绑服务unbindService,应用在打开菜单时注册回调以响应UIService端的数据请求;
步骤S6:应用端不同数据定义不同的唯一key值,当数据更新时,应用端接收到UIService端传来的ITaskCallback对象,调用ITaskCallback对象的registerCallback或者unregisterCallback方法,进行注册回调和解除回调,实现数据的更新;
步骤S7:应用在结束与UIService端连接的时候,调用unbindService方法进行解绑。
2.根据权利要求1所述的一种Android应用中实现UI与数据分离的方法,其特征在于,所述步骤S4中通过调用gson开源库将UIService端返回的Binder对象并将Binder对象转为AIDL接口对象SrvInterface。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010144060.6A CN111352611B (zh) | 2020-03-04 | 2020-03-04 | 一种Android应用中实现UI与数据分离的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010144060.6A CN111352611B (zh) | 2020-03-04 | 2020-03-04 | 一种Android应用中实现UI与数据分离的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352611A true CN111352611A (zh) | 2020-06-30 |
CN111352611B CN111352611B (zh) | 2022-02-01 |
Family
ID=71192571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010144060.6A Active CN111352611B (zh) | 2020-03-04 | 2020-03-04 | 一种Android应用中实现UI与数据分离的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352611B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872305A (zh) * | 2010-06-08 | 2010-10-27 | 用友软件股份有限公司 | Ui表现和业务逻辑分离方法和系统 |
CN102520936A (zh) * | 2011-11-30 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
US20170228524A1 (en) * | 2016-02-09 | 2017-08-10 | International Business Machines Corporation | Protecting an application via an intra-application firewall |
CN107391272A (zh) * | 2017-06-26 | 2017-11-24 | 北京五八信息技术有限公司 | 多进程数据交互的方法和终端 |
CN110413259A (zh) * | 2018-04-28 | 2019-11-05 | 中兴通讯股份有限公司 | Android服务框架、实现扩展服务的方法及装置 |
-
2020
- 2020-03-04 CN CN202010144060.6A patent/CN111352611B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872305A (zh) * | 2010-06-08 | 2010-10-27 | 用友软件股份有限公司 | Ui表现和业务逻辑分离方法和系统 |
CN102520936A (zh) * | 2011-11-30 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
US20170228524A1 (en) * | 2016-02-09 | 2017-08-10 | International Business Machines Corporation | Protecting an application via an intra-application firewall |
CN107391272A (zh) * | 2017-06-26 | 2017-11-24 | 北京五八信息技术有限公司 | 多进程数据交互的方法和终端 |
CN110413259A (zh) * | 2018-04-28 | 2019-11-05 | 中兴通讯股份有限公司 | Android服务框架、实现扩展服务的方法及装置 |
Non-Patent Citations (2)
Title |
---|
千古壹号: "Android系列之UI组件----Menu菜单", 《HTTPS://WWW.CNBLOGS.COM/QIANGUYIHAO/P/4133292.HTML》 * |
音苍: "SystemUI启动流程及主体布局介绍", 《HTTPS://WWW.JIANSHU.COM/P/0AB1279465FA》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111352611B (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569794B (zh) | 应用程序开发装置 | |
CN108830720B (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
CN110888615B (zh) | 用于Android系统双屏异显的多输入设备交互方法、装置及介质 | |
US9854296B2 (en) | Distributed system architecture for control of a set top box | |
CN103324471A (zh) | 动态修改应用启动图标的方法、消息的发送方法、终端 | |
US20210337015A1 (en) | Method and system of application development for multiple device client platforms | |
WO2023093429A1 (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
CN103927163A (zh) | 插件框架处理装置及插件系统 | |
CN102550003A (zh) | 用于管理持续丰富因特网应用的方法和设备 | |
CN110297624B (zh) | 基于electron框架的Widget系统的实现方法及采用该系统的电视机 | |
CN109885355A (zh) | 一种应用启动方法及相关装置 | |
CN102622237B (zh) | 一种业务功能流程化的配置方法及系统 | |
CN106502717B (zh) | 应用程序运行方法及装置 | |
CN102421028A (zh) | 智能电视的控制方法、智能电视、遥控装置及控制系统 | |
CN112231017B (zh) | 在Linux上兼容运行Android运行环境的虚拟键鼠方法与装置 | |
CN113992958B (zh) | 一种多窗口同屏互动方法、终端及存储介质 | |
CN109814915B (zh) | 基于lua的参数配置方法、装置、介质和电子设备 | |
CN110825455A (zh) | 一种应用程序运行方法、装置和系统 | |
CN102426537B (zh) | Cad中外部集成进程调用主程序进程的方法及装置 | |
CN111352611B (zh) | 一种Android应用中实现UI与数据分离的方法 | |
CN114286167A (zh) | 跨设备的交互方法、装置、电子设备以及存储介质 | |
CN112558968B (zh) | 一种资源树视图的生成方法、装置、设备及存储介质 | |
CN101917573B (zh) | Widget系统的实现方法及采用该系统的电视机 | |
CN112068879B (zh) | 基于配置化的客户端应用程序开发框架构建方法及装置 | |
CN115481343A (zh) | 目标组件的生成方法、装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |