CN108241501A - 一种移动客户端软件实现及更新方法 - Google Patents
一种移动客户端软件实现及更新方法 Download PDFInfo
- Publication number
- CN108241501A CN108241501A CN201810078741.XA CN201810078741A CN108241501A CN 108241501 A CN108241501 A CN 108241501A CN 201810078741 A CN201810078741 A CN 201810078741A CN 108241501 A CN108241501 A CN 108241501A
- Authority
- CN
- China
- Prior art keywords
- data
- mobile client
- control
- agreement
- page
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种移动客户端软件实现及更新方法,其特征在于移动客户端软件动态实现的方法包括:1)建立一套以JSON网络传输协议作为基础的传输协议,2)建立与协议及移动客户端属性相对应的属性池,3)获取需要显示页面的协议的具体内容;4)根据协议中标记的控件显示的位置和大小,5)获取协议中控件关系的描述,6)根据协议中描述信息,进行数据加载的操作;7)关于数据的缓存的操作,解决移动客户端开发和升级过程中耗时的开发过程,可以达到根据需求快速对移动客户端进行动态化升级,免下载,快速开发、快速升级迭代。
Description
技术领域
本发明涉及一种移动客户端软件实现及更新方法,属于计算机技术领域。
背景技术
移动互联网高速发展,移动客户端已经成为日常生活不可或缺的一部分,但移动客户端开发商或开发者对于移动客户端开发的开发成本和版本升级速度已经成为移动客户端产出的瓶颈。
目前的移动客户端开发过程主要步骤是编写UI页面、接口对接、实现具体功能逻辑,现阶段这一过程都是针对项目功能的针对性开发,过程是非常耗时的,并且不可复用,现在所有移动客户端开发商和开发者都在不断重复进行的过程,耗费大量的财力、人力。
目前的移动客户端升级过程主要步骤是当移动客户端有新版本提示用户进行更新,当用户选择进行更新时重新下载安装包,经过漫长的下载等待后安装包下载完成进行安装,系统会提示是否替换当前版本,用户选择确定后会替换掉当前的旧版本,这一过程对用户来说是非常漫长的,体验差,如果当移动客户端遇到问题需要频繁更新的时候,对用户来说是非常痛苦的。
可见,如果改变移动客户端开发耗时和更新过程繁琐的现状,提供更便捷的开发和更新过程的解决方案,达到移动客户端的动态配置,简化和缩短移动客户端开发、改变当前用户更新移动客户端的方式,成为一个亟待解决的问题。
发明内容
本发明的目的在于提供一种移动客户端软件实现及更新方法,其鉴于当前的移动客户端开发过程不能实现完全的动态配置,需要每次根据项目功能进行针对性开发的,进行耗时的编写过程和繁琐的移动客户端升级过程,故提出了本发明实现移动客户端的动态配置化,解决移动客户端开发和升级过程中耗时的开发过程,可以达到根据需求快速对移动客户端进行动态化升级,免下载,快速开发、快速升级迭代。
本发明的技术方案是这样实现的:一种移动客户端软件实现及更新方法,包括移动客户端软件动态实现的方法和移动客户端软件动态更新的方法,其特征在于移动客户端软件动态实现的方法包括:
1)建立一套以JSON网络传输协议作为基础的传输协议,将JSON网络传输协议调整为单层数据模型;定义页面、事件、数据三方面的字段内容;通过字段的组合形成完整的页面描述信息来描述具体的页面内容;
2)建立与协议及移动客户端属性相对应的属性池,用于存储解析后的属性;建立与协议及移动客户端控件相对应的控件池,用于存储解析后的控件;
3)获取需要显示页面的协议的具体内容;根据获取的协议,创建对应的属性和控件,并加入到属性池和控件池中;根据获取的协议,解析协议中的事件字段实现移动客户端事件创建和绑定;
4)根据协议中标记的控件显示的位置和大小,以分辨率1334*750作为标准(单位是像素),再根据当前用户使用的移动设备的分辨率通过和公式计算出当前应该显示的控件的宽高和位置,从而使动态加载的页面在不同的设备上显示相同的效果;
5)获取协议中控件关系的描述,根据描述创建控件通信通道;根据描述绑定广播控件,用于动作触发发送广播;根据描述绑定监听控件,用于监听对应的广播控件,当广播控件被触发时,所有的监听控件都会收到通知,完成控件的更新;
6)根据协议中描述信息,进行数据加载的操作;数据加载的操作包括:根据协议中的描述,解析出接口名称;根据协议中的描述,解析出参数信息;获取绑定了指定参数的控件数据;封装参数信息并提交到指定接口;接收到接口返回的数据信息;解析接口返回的数据信息;将数据信息显示到页面;
7)关于数据的缓存的操作,数据的缓存操作包括:建立移动客户端数据库,数据库字段包括:数据id、数据内容、数据缓存的时间戳;保存返回的数据内容到数据库,判断当前缓存数据库中是否存在该数据,如果不存在直接进行保存,如存在对比当前数据返回数据修改时间和数据缓存时间,查看是否进行更新;
移动客户端动态更新的方法,包括以下步骤:
1)修改服务器端需要更新的页面协议内容,并修改版本信息;
2)移动客户端获取到服务器上最新的的协议内容,解析协议中的更新版本信息;
3)获取当前移动客户端本地数据中存储的版本信息;
4)通过比对服务器版本与移动客户端的本地存储的版本信息进行比对,来确认是否有页面更新;
5)移动客户端的版本信息与服务器版本不一致对页面页面更新并保存到本地数据中;
6)重新加载并解析当前页面完成页面更新。
本发明的积极效果是通过控制自定义移动客户端的协议,实现移动客户端的界面的动态化呈现、业务逻辑的动态绑定,改变了传统的移动客户端开发过程,通过协议的配置就方便的实现了移动客户端需要的功能,大大的缩短了移动客户端的开发周期,节省大量的开发人员成本。通过动态配置的移动客户端如果后期涉及到升级时,只需要修改协议即可,不需要重新下载版本覆盖升级,增强了用户体验。
附图说明
图 1 是本发明移动客户端整体的实现流程图。
图 2 是本发明动态化配置UI的加载流程图。
图 3 是本发明是动态操作事件的处理流程图。
图 4 是本发明参数封装及提交的处理流程图 。
图 5 是本发明更新的执行流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步的描述:一种移动客户端软件实现及更新方法,包括移动客户端软件动态实现的方法和移动客户端软件动态更新的方法,其特征在于移动客户端软件动态实现的方法包括:
1)建立一套以JSON网络传输协议作为基础的传输协议,将JSON网络传输协议调整为单层数据模型;定义页面、事件、数据三方面的字段内容;通过字段的组合形成完整的页面描述信息来描述具体的页面内容;
2)建立与协议及移动客户端属性相对应的属性池,用于存储解析后的属性;建立与协议及移动客户端控件相对应的控件池,用于存储解析后的控件;
3)获取需要显示页面的协议的具体内容;根据获取的协议,创建对应的属性和控件,并加入到属性池和控件池中;根据获取的协议,解析协议中的事件字段实现移动客户端事件创建和绑定;
4)根据协议中标记的控件显示的位置和大小,以分辨率1334*750作为标准(单位是像素),再根据当前用户使用的移动设备的分辨率通过 和公式计算出当前应该显示的控件的宽高和位置,从而使动态加载的页面在不同的设备上显示相同的效果;
5)获取协议中控件关系的描述,根据描述创建控件通信通道;根据描述绑定广播控件,用于动作触发发送广播;根据描述绑定监听控件,用于监听对应的广播控件,当广播控件被触发时,所有的监听控件都会收到通知,完成控件的更新;
6)根据协议中描述信息,进行数据加载的操作;数据加载的操作包括:根据协议中的描述,解析出接口名称;根据协议中的描述,解析出参数信息;获取绑定了指定参数的控件数据;封装参数信息并提交到指定接口;接收到接口返回的数据信息;解析接口返回的数据信息;将数据信息显示到页面;
7)关于数据的缓存的操作,数据的缓存操作包括:建立移动客户端数据库,数据库字段包括:数据id、数据内容、数据缓存的时间戳;保存返回的数据内容到数据库,判断当前缓存数据库中是否存在该数据,如果不存在直接进行保存,如存在对比当前数据返回数据修改时间和数据缓存时间,查看是否进行更新;
移动客户端动态更新的方法,包括以下步骤:
1)修改服务器端需要更新的页面协议内容,并修改版本信息;
2)移动客户端获取到服务器上最新的的协议内容,解析协议中的更新版本信息;
3)获取当前移动客户端本地数据中存储的版本信息;
4)通过比对服务器版本与移动客户端的本地存储的版本信息进行比对,来确认是否有页面更新;
5)移动客户端的版本信息与服务器版本不一致对页面页面更新并保存到本地数据中;
6)重新加载并解析当前页面完成页面更新。
实施例1
如图1所示移动客户端整体的实现流程,页面加载流程包括以下步骤:
步骤S101:建立与协议匹配的UI属性池,UI属性池的建立可以打通协议与属性池的通道。协议的定义内容都可以解析成对应的UI属性,通过UI属性的设置达到动态修改UI样式的功能,具体的解析者是S103,封装者是S108,最终的使用者是S102。
步骤S102:建立与协议匹配的控件池,通过UI解析器(S103)进行协议解析,会解析出对应的控件内容。
步骤S103:UI解析步骤,通过UI解析器对协议进行解析,解析成对应的控件和属性,并且将解析出的属性与控件进行绑定,绑定完成后可以呈现具体的UI界面效果。
步骤S108:将解析出的UI属性进行封装到UI中继器中,UI中继器作为属性和控件的桥梁可以使控件调用UI属性集合,修改控件自身的样式。以上的步骤就是界面加载的相关过程。
步骤S104:解析协议中的事件部分的内容。
步骤S106:将解析后的事件进行绑定处理,绑定给控件后,控件就具备了事件处理的响应机制,可以响应用户的单击、双击、长按、滑动、滚动等事件。
步骤S105:解析协议中的参数部分的内容。
步骤S107:将解析后的参数信息进行封装,封装为对应的请求参数,将参数信息封装给控件信息,当控件触发事件时,提交对应的参数信息用于服务器请求。
实施例2
如图2所示移动客户端页面的动态加载流程图,其页面加载流程包括以下步骤:
步骤S202:实现了UI属性的基类OSAttr,在OSAttr中定义了一个val属性及OSAttr、apply、execute三个函数,用于属性的处理。所有继承自OSAttr的子类都具有属性的功能,可以作为属性进行使用。
val属性的类型是万能的数据类型,可以根据子类的属性值要求进行变化,用于协议中的属性的封装。
OSAttr是一个构造方法,有一个万能参数,作用就是用于val的赋值操作。
apply方法是公有的方法(public),仅有一个View参数,通过apply方法可以调用execute方法使属性生效,改变传入的View的属性值。
execute是个抽象方法,需要子类根据自身的功能进行个性化拓展,详见S201。
步骤S201:S201中标注的只是少部分属性,这些属性都是继承自OSAttr,实现了OSAttr中的execute方法进行具体的功能定义,例如S201中的TextAttr中的execute的作用就是改变传入View的显示文本,TextColorAttr的execute方法作用就是改变View显示的文本颜色。
步骤S203:定义了属性封装类OSLayoutStyle用于属性集合的封装,OSLayoutStyle的封装可以将控件与属性进行关联,OSLayoutStyle的属性有autoAttrs以及addAttr、fillAttrs两个函数。
autoAttrs属性是List集合类型,用于存储解析后的属性;
addAttr函数可以添加一个属性到autoAttrs集合中;
fillAttrs函数用于批量执行属性的execute方法,从而使属性批量生效,达到控件的样式改变的效果;
步骤S205:定义了接口OSBaseView,所有的控件都实现OSBaseView接口,接口定义了十个抽象方法来指导和控制自定义接口的实现,很大程度上增强了自定义控件的通用性,具体的方法如下:
getOsLayoutStyle函数是一个无参的方法,返回值是OSLayoutStyle,getOsLayoutStyle方法的实现可以提供给UI解析器(对应步骤S206)获取到控件OsLayoutStyle对象,进而实现将解析完成的属性进行封装的功能;
bindListener函数主要用于控件事件的绑定,有一个OSBaseListener参数用于接收事件解析器解析完成的事件,没有返回值;
bindOsParam函数主要用于控件参数的绑定,有一个OSParam参数用于接收UI解析器解析的参数信息,绑定参数后,控件会将当前控件的值封装给传入的参数用于数据提交;
bindWidgetChannel函数主要用于实现控件间通信的功能,有一个OsWidgetChannel参数,用于接收控件关系的绑定关系,用于通信;
receiverWidgetMsg函数主要用于响应其它已绑定控件发送的通知消息,receiverWidgetMsg对应有两个参数,一个是CONTROLLER记录了当前消息需要执行的操作,主要操作包含UPDATE(更新)、CHANGE(改变)、HIDDEN(隐藏)三个动作,另一个参数是String类型,用于传递控件的发送的具体的内容;
供UI解析器调用,获取到控件对应的OSParam,UI解析器通过获取到的控件的OSParam对象可将解析出的参数保存至OSParam中传递给控件进行使用;
getOsViewId函数主要用于控件id(唯一标识)的获取;
setEName函数可以设置控件的别名,用于数据的区分,setEName函数只有一个String类型的参数,用于别名的接收;
accept函数用于接收数据的广播,当数据解析器解析后会根据EName进行消息的广播,如果EName匹配的话就会通过accept函数接收到数据内容,accept函数只有一个String类型的参数用于数据的接收;
步骤S204:系统级定义的控件库。
步骤S207:实现与协议对应的控件库,所有实现的控件都实现自OSBaseView和对应的系统级的控件,控件添加了四个私有属性用于临时数据的保存。
osLayoutStyle属性的类型是OSLayoutStyle,用于保存属性集合和设置对应属性的样式;
osParam属性的类型是OSParam,用于保存参数的内容;
data属性的类型是String,用于保存控件对应显示的默认值;
osWidgetChannel属性是OsWidgetChannel,用于存储控件通信通道,用于发布通知;
步骤206:OSViewParser作为UI解析器是整个UI层的核心,用于将协议解析成系统可识别的控件,并将解析后的属性分别封装到不同的控件中。OSViewParser的功能实现对应着五个属性、七个函数。
对应的五个属性的主要功能:
mActivity属性对应的类型是Activity,主要用于显示层Activity对象的存储,通过存储的Activity对象可以获取到屏幕宽、高、状态栏高度属性和配置信息;
groupMaps属性对应的类型是Map集合,通过键值对的方式对解析后的布局ViewGroup进行保存。groupMaps的key对应的是当前ViewGroup布局的id,value对应的是当前的ViewGroup对象,保存好的ViewGroup会在界面显示时使用,通过id的顺序对界面进行排序;
listenerParser属性用于关联OSListenerParser对象,当解析协议解析到事件时就会创建OSListenerParser对象,将事件的具体的协议内容传递给OSListenerParser进行解析;
defaultJSON属性存数的是UI要默认显示的内容;
osDataParser属性用于关联OSDataParser对象,当解析协议解析到数据时就会创建OSDataParser对象,将数据的具体的协议内容传递给osDataParser进行解析。
对应的七个函数的主要功能:
OSViewParser函数是一个构造函数主要作用是当OSViewParser初始化时进行赋值操作,OSViewParser函数的参数主要有两个一个是Activity类型的mActivity用于接收UI层的Activity对象和String类型paramValue用于接收获取UI数据传入的参数的值,再初始化OSViewParser对象时必须传入这两个参数,从而达到赋值的效果;
parserOsView函数的作用就是解析协议的内容,仅有一个String类型的参数osViewJson用于接收当前需要解析的协议的内容,返回值是ViewGroup。
parserOsView函数一个重载的方法,但是对应的是两个参数,除了一个String类型的参数osViewJson用于接收当前需要解析协议的内容外,还有一个参数就是JSONObject类型的defaultData,用于接收当前UI显示的默认值,返回值也是ViewGroup;
parserSub函数主要用于解析具体的控件的内容,将协议中的控件标记解析成对应的控件;
parseAttr函数主要用于解析具体的控件的属性内容;
parserChannel函数主要用于解析控件通信通道,parserChannel函数对应有两个参数一个OSBaseView类型的osBaseView用于控件的传递,还有一个是JSONObject类型的jsonObject用于传递具体的通信关系的描述;
bindChannel函数主要用于绑定通信通道,将parserChannel函数解析的通信通道与对应的控件进行绑定,从而达到通信的效果。
实施例3
如图3所示移动客户端页面的动态事件处理流程图,页面的动态事件处理流程括以下步骤:
步骤S301:OSListenerParser是事件解析器,将协议中对应事件相关的描述解析成对应的事件和动作,OSListenerParser主要对应一个属性、两个函数。具体的属性和函数的描述如下:
mContext属性的类型是Context上下文对象,Context是创建事件的必要参数;
OSListenerParser是一个构造函数,只有一个Context的参数mContext用于Context的接收,接收后的属性会保存到mContext属性中;
parserListener函数解析事件并将解析后的事件绑定给指定控件,该函数有两个参数,OsBaseView类型的osBaseView用于接收控件,JSONObject类型的jsonObject参数用于接收事件的具体的协议内容。
步骤S302:OSBaseListener是一个接口,规范了所有实现OSBaseListener接口的操作方法。OSBaseListener接口主要定义了两个待实现的函数execute和bindCallback。函数具体的作用如下:
execute函数主要用于指导实现OSBaseListener接口的子类来实现执行事件的具体的动作处理业务;
bindCallback函数主要用于指导实现OSBaseListener接口的子类实现绑定处理事件回调的响应业务。
步骤S303:OsOnClickListener实现了OSBaseListener接口,用于处理控件的单击事件的业务,针对了单击事件的处理,OsOnClickListener定义了六个属性和八个方法进行业务的动态处理。具体功能如下:
六个属性描述:
type属性是String类型,主要用于单击事件的动作类型的保存,对应的动作主要有START(打开新页面)、FINISH(关闭当前页面)、SUBMIT(提交数据)、DIALOG(显示弹层)四个类型的动作处理;
method属性是String类型,用于保存处理业务对应的服务器接口地址;
param属性也是String类型,用于参数的保存,当单击事件对应的动作为START时会将param属性保存的值传递到新页面进行使用;
mContext属性的类型是Context上下文对象,用于存储当前显示页面的Context对象,Context对象因为是事件执行具体动作的必须属性;
callback的类型是ListenerCallback接口的引用,用于保存有需要获取事件执行结果的调用方传入的ListenerCallback对象,当事件处理完成后会将结果反馈到callback中;
value的类型是Serializable(序列化对象)用于保存需要事件处理的值;
八个方法描述:
OsOnClickListener函数是一个构造函数,当初始化OsOnClickListener类的时候会调用构造函数,OsOnClickListener函数只有一个Context上下文参数context,OsOnClickListener函数会把传入context参数保存到mContext函数中;
execute函数主要功能用于执行事件响应的具体操作,具体执行分为两步,首先会向OsExcuteFactory动作工厂传入type、method、param、value四个属性创建相应动作,第二步会进行动作的执行;
bindCallback函数只有一个参数callback,主要用于接收传入的ListenerCallback对象,将接收到ListenerCallback对象保存到全局的callback属性中,当事件执行完成后会调用callback的resultListenerData函数将处理结果反馈到调用者;
getOnClickListener函数用于获取OsOnClickListener创建的OnClickListener对象;
setType函数只有一个String类型的参数type,用于接收调用者传入的事件的动作类型;
setMethod函数只有一个String类型的参数method,用于接收调用者传入的接口的名称;
setParam函数只有一个String类型的参数param,用于接收调用者传入的参数;
setValue函数只有一个Serializable类型的参数value,用于接收调用者传入需要事件需要处理的值;
步骤S304:定义了ListenerCallback接口,所有需要接收事件处理结果的调用者都可以实现接口ListenerCallback接口,ListenerCallback接口中只有一个函数resultListenerData,resultListenerData函数中有一个万能类型的参数t,事件处理后会调用resultListenerData函数将结果赋值给参数t,因此实现了ListenerCallback接口的实现类就会接收到事件的响应结果,OsOnClickListener中有ListenerCallback接口的引用;
步骤S305:OsExcuteFactory是动作生产工厂,OsExcuteFactory中只有一个getExcute函数,getExcute函数中包含了String类型的type用于动作类型的接收、String类型的method用于接口名称的接收、String类型的param用于参数的接收以及万能类型t用于事件处理值的接收,getExcute函数会通过type的值进行不同的执行动作创建,并会根据不同的动作类型分别把method、param以及t赋值给相应的动作,getExcute函数的返回类型是OsExcute,OsExcute的功能见步骤S208的相关描述;
步骤S308:OsExcute是一个接口,定义了执行动作的规范,所有处理事件的执行动作的类都需要实现OsExcute接口,OsExcute接口接口中只定义了一个excute方法,excute方法只有一个Context类型的参数context,Context是动作执行中必须的参数;
步骤S306:OsFinishExcute实现了OsExcute接口,也实现了OsExcute接口中的excute方法,在excute方法中主要处理的业务是关闭,当事件触发了OsFinishExcute动作当前UI界面会被关闭;
步骤S307:OsStartviewExcute实现了OsExcute接口,主要完成了跳转新UI页面的功能。OsStartviewExcute定义了三个属性和两个函数,具体功能如下:
关于三个属性的描述:
method是String类型,主要用于接口的名称的保存;
param是String类型,主要用于接口需要参数的保存;
t是万能数据类型,主要用于动作处理需要的数据的保存;
关于两个函数的描述:
OsStartviewExcute函数是一个构造函数主要作用实在初始化OsStartviewExcute对象时接收处理跳转新UI页面功能的必要的参数,对应参数就是上方所描述的method、param、t三个参数;
excute函数主要是对OsExcute接口中的excute函数的实现,在excute中完成了具体跳转到新UI页面的功能。
实施例4
如图4所示参数封装及提交的处理流程包括以下步骤:
步骤S205:同实施例二中的步骤S205实现流程;
步骤S206:同实施例二中的步骤S206实现流程,涉及到本实施例的主要是当解析协议解析到参数类型时会创建OSParamParser对象,并将当前解析的控件对象和协议中的参数部分的内容传入到OSParamParser对象中;
步骤S207:同实施例一中的步骤S207实现流程,在本实施例中重复体现是由于OSParamParser对象间接的引用了OSButton对象,二者有依赖关系;
步骤S208:同实施例二中的步骤S208实现流程;
步骤S402:OSParam对象主要用于保存解析后的参数的信息,OSParam对象包含了两个属性,一个是String类型的属性paramName用于保存属性的名称,另一个属性是String类型的paramValidate用于保存该参数提交时的验证规则;
步骤S403:OSParamParser是参数解析器,主要实现了协议中参数部分的解析功能,并将解析后的参数以OSParam对象的形式封装到控件中,并将控件的引用进行保存。OSParamParser主要包含一个属性和三个函数,具体的描述如下:
关于一个属性的描述:
submitViews属性的类型是List集合类型,用于存储带有带有参数的控件的引用;
关于三个函数的描述:
parseParamData函数主要用于解析传入的协议的参数部分的内容,将参数协议解析成对应的OSParam参数对象,因此parseParamData函数仅有一个JSONObject类型的参数jsonObject;
bindOsParam函数包含两个参数OsBaseView类型的osBaseView和JSONObject类型的jsonObject,主要的作用是将调用parseParamData函数解析后的OSParam对象绑定给传入的osBaseView对象,并将osBaseView对象保存到submitViews属性中,方便提交数据时使用;
getSubmitsView函数主要是为调用者提供要给获取submitViews属性的通道,getSubmitsView函数没有参数,仅有一个与submitViews属性一致的List集合类型的返回值;
步骤S404:SubmitCallback是一个接口,用于规范提交后返回内容的存储方式,所有想要获取提交结果的对象都需要实现SubmitCallback接口;
步骤S401:OsSubmitExcute实现了OsExcute接口和SubmitCallback接口,主要用于处理事件触发的提交动作,并且可以接收提交后的返回值信息。OsSubmitExcute主要包含了三个属性、四个函数,具体的描述如下:
关于三个属性的描述:
method是String类型,主要用于接口的名称的保存;
param是String类型,主要用于接口需要参数的保存;
mContext是Context上下文类型,主要用于执行完提交动作后的跳转新UI类型的处理;
关于四个函数的描述:
OsSubmitExcute函数是一个构造函数主要作用实在初始化OsStartviewExcute对象时接收处理跳转新UI页面功能的必要的参数,对应参数就是上方所描述的method、param、mContext三个参数;
excute函数主要是对OsExcute接口中的excute函数的实现,在excute中完成了具体提交数据到服务器的操作,在excute函数中会获取OSParamParser对象的实例,通过OSParamParser对象获取当前UI页面所有控件的需要提交的参数及参数对应的值,然后excute函数会根据参数名和参数对应值进行数据封装,最后把数据封装的数据提交,提交的具体描述见S405;
resultSubmitData函数主要用于提交操作完成后的数据接收,resultSubmitData函数主要有一个String类型的参数s,s中封装的就是提交的结果;
error函数主要用于接收提交操作失败后的对应的失败码的接收,通过失败码进行不同的提醒信息的提醒;
步骤S405:SubmitManager是提交管理者,主要作用是将需要提交的数据进行封装并调用HttpTools将封装好的数据提交到服务器,SubmitManager有一个属性和两个函数,属性和函数的描述如下:
关于一个属性的描述:
mContext是Context上下文类型的属性,主要用于传入的Context对象的存储,Context对象是提交是必须的参数;
关于两个函数的描述:
SubmitManager是一个构造函数,主要作用就是再初始化SubmitManager对象时接收Context对象,并将接收的Context对象保存至mContext属性中;
submit函数作用是整合参数信息调用HttpTools进行提交,并处理HttpTools提交后返回的结果,将结果通过SubmitCallback回调给调用者。
步骤S406:HttpTools是一个网络工具类主要用于服务器请求,HttpTools主要包含两个函数,对于函数的描述如下:
submitPostData函数主要处理post方式的网络请求,submitPostData主要包含三个参数,String类型的strUrlPath用于接收服务器的请求地址,Map集合类型的params用于参数的接收以及String类型的encode接收传入的提交数据的编码信息;
submitGetData函数主要处理get方式的网络请求,submitGetData主要包含三个参数,String类型的strUrlPath用于接收服务器的请求地址,Map集合类型的params用于参数的接收以及String类型的encode接收传入的提交数据的编码信息;
实施例5
如图5所移动客户端动态免安装的更新处理流程包括以下步骤:
步骤S501:根据更新的功能,修改协议的内容。
步骤S502:移动客户端检测协议的更新状态,发现与当前版本的协议内容不一致,重新加载协议内容。
步骤S503:调用解析器重新解析协议内容,将协议内容翻译成具体的移动客户端的UI界面和处理业务。
步骤S504:解析器解析完成后,移动客户端更新即完成。
Claims (1)
1.一种移动客户端软件实现及更新方法,包括移动客户端软件动态实现的方法和移动客户端软件动态更新的方法,其特征在于移动客户端软件动态实现的方法包括:
1)建立一套以JSON网络传输协议作为基础的传输协议,将JSON网络传输协议调整为单层数据模型;定义页面、事件、数据三方面的字段内容;通过字段的组合形成完整的页面描述信息来描述具体的页面内容;
2)建立与协议及移动客户端属性相对应的属性池,用于存储解析后的属性;建立与协议及移动客户端控件相对应的控件池,用于存储解析后的控件;
3)获取需要显示页面的协议的具体内容;根据获取的协议,创建对应的属性和控件,并加入到属性池和控件池中;根据获取的协议,解析协议中的事件字段实现移动客户端事件创建和绑定;
4)根据协议中标记的控件显示的位置和大小,以分辨率1334*750作为标准(单位是像素),再根据当前用户使用的移动设备的分辨率通过和公式计算出当前应该显示的控件的宽高和位置,从而使动态加载的页面在不同的设备上显示相同的效果;
5)获取协议中控件关系的描述,根据描述创建控件通信通道;根据描述绑定广播控件,用于动作触发发送广播;根据描述绑定监听控件,用于监听对应的广播控件,当广播控件被触发时,所有的监听控件都会收到通知,完成控件的更新;
6)根据协议中描述信息,进行数据加载的操作;数据加载的操作包括:根据协议中的描述,解析出接口名称;根据协议中的描述,解析出参数信息;获取绑定了指定参数的控件数据;封装参数信息并提交到指定接口;接收到接口返回的数据信息;解析接口返回的数据信息;将数据信息显示到页面;
7)关于数据的缓存的操作,数据的缓存操作包括:建立移动客户端数据库,数据库字段包括:数据id、数据内容、数据缓存的时间戳;保存返回的数据内容到数据库,判断当前缓存数据库中是否存在该数据,如果不存在直接进行保存,如存在对比当前数据返回数据修改时间和数据缓存时间,查看是否进行更新;
移动客户端动态更新的方法,包括以下步骤:
1)修改服务器端需要更新的页面协议内容,并修改版本信息;
2)移动客户端获取到服务器上最新的的协议内容,解析协议中的更新版本信息;
3)获取当前移动客户端本地数据中存储的版本信息;
4)通过比对服务器版本与移动客户端的本地存储的版本信息进行比对,来确认是否有页面更新;
5)移动客户端的版本信息与服务器版本不一致对页面页面更新并保存到本地数据中;
6)重新加载并解析当前页面完成页面更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810078741.XA CN108241501A (zh) | 2018-01-26 | 2018-01-26 | 一种移动客户端软件实现及更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810078741.XA CN108241501A (zh) | 2018-01-26 | 2018-01-26 | 一种移动客户端软件实现及更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108241501A true CN108241501A (zh) | 2018-07-03 |
Family
ID=62698839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810078741.XA Pending CN108241501A (zh) | 2018-01-26 | 2018-01-26 | 一种移动客户端软件实现及更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108241501A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110858146A (zh) * | 2018-08-23 | 2020-03-03 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和机器可读介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271283A1 (en) * | 2004-06-25 | 2007-11-22 | Stephen Maryka | Systems and methods for rendering and increasing portability of document-based user interface software objects |
CN101334728A (zh) * | 2008-07-28 | 2008-12-31 | 北京航空航天大学 | 一种基于xml文档描述的界面生成方法和平台 |
CN102375738A (zh) * | 2010-08-25 | 2012-03-14 | 中兴通讯股份有限公司 | 一种移动终端数据管理的装置和方法 |
CN103164333A (zh) * | 2011-12-16 | 2013-06-19 | 京信通信系统(中国)有限公司 | 嵌入式设备系统web调测方法及系统、web服务器 |
CN103577197A (zh) * | 2013-11-18 | 2014-02-12 | 深圳市远行科技有限公司 | 一种安卓应用程序动态表单的实现方法 |
CN104158836A (zh) * | 2014-06-23 | 2014-11-19 | 浙江大学城市学院 | 一种通过数据渲染移动应用界面的方法 |
CN105653254A (zh) * | 2014-12-03 | 2016-06-08 | 科大讯飞股份有限公司 | 原生界面适配方法、装置及应用其的电子设备 |
CN106371825A (zh) * | 2016-08-23 | 2017-02-01 | 武大吉奥信息技术有限公司 | 一种移动端应用界面表单动态生成方法及装置 |
CN106598556A (zh) * | 2015-10-15 | 2017-04-26 | 阿里巴巴集团控股有限公司 | 用户界面生成方法及装置 |
-
2018
- 2018-01-26 CN CN201810078741.XA patent/CN108241501A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271283A1 (en) * | 2004-06-25 | 2007-11-22 | Stephen Maryka | Systems and methods for rendering and increasing portability of document-based user interface software objects |
CN101334728A (zh) * | 2008-07-28 | 2008-12-31 | 北京航空航天大学 | 一种基于xml文档描述的界面生成方法和平台 |
CN102375738A (zh) * | 2010-08-25 | 2012-03-14 | 中兴通讯股份有限公司 | 一种移动终端数据管理的装置和方法 |
CN103164333A (zh) * | 2011-12-16 | 2013-06-19 | 京信通信系统(中国)有限公司 | 嵌入式设备系统web调测方法及系统、web服务器 |
CN103577197A (zh) * | 2013-11-18 | 2014-02-12 | 深圳市远行科技有限公司 | 一种安卓应用程序动态表单的实现方法 |
CN104158836A (zh) * | 2014-06-23 | 2014-11-19 | 浙江大学城市学院 | 一种通过数据渲染移动应用界面的方法 |
CN105653254A (zh) * | 2014-12-03 | 2016-06-08 | 科大讯飞股份有限公司 | 原生界面适配方法、装置及应用其的电子设备 |
CN106598556A (zh) * | 2015-10-15 | 2017-04-26 | 阿里巴巴集团控股有限公司 | 用户界面生成方法及装置 |
CN106371825A (zh) * | 2016-08-23 | 2017-02-01 | 武大吉奥信息技术有限公司 | 一种移动端应用界面表单动态生成方法及装置 |
Non-Patent Citations (2)
Title |
---|
彭亚云: "基于XML的信息家电界面自动生成的研究", 《计算机应用技术》 * |
程润峰: "基于iOS平台的移动商务社交平台客户端系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110858146A (zh) * | 2018-08-23 | 2020-03-03 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和机器可读介质 |
CN110858146B (zh) * | 2018-08-23 | 2024-04-12 | 阿里巴巴新加坡控股有限公司 | 数据处理方法、装置和机器可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0726004B1 (en) | Object-oriented rule-based protocol system | |
Carzaniga et al. | Designing distributed applications with mobile code paradigms | |
CN102420785B (zh) | 中继服务器以及中继通信系统 | |
US7756905B2 (en) | System and method for building mixed mode execution environment for component applications | |
CN101202709B (zh) | 中继服务器以及中继通信系统 | |
CA2446809C (en) | General and reusable components for defining net-centric application program architectures | |
US6031977A (en) | Object-oriented distributed communications directory service | |
US5594921A (en) | Authentication of users with dynamically configurable protocol stack | |
CN106022007B (zh) | 面向生物组学大数据计算的云平台系统及方法 | |
EP1308841A2 (en) | Service portal with application framework for facilitating application and feature development | |
EP1355231A2 (en) | Processing data files using plug-ins | |
JP2007511018A (ja) | ソフトウェアをコンポーズする方法及び装置 | |
US20080307048A1 (en) | Method and System for Operating Applications for Remote Terminal Devices | |
CN108632375A (zh) | 一种针对分布式部署服务软件程序的在线升级方法 | |
CN103729189B (zh) | 基于lua的播放协议转换方法、系统、终端 | |
US20030163570A1 (en) | Command line interface session tool | |
CN111552901B (zh) | H5跨引擎客户端数据自动化更新的方法、存储介质 | |
US20040039720A1 (en) | Method for providing platform independent business rules | |
EP2212783A1 (en) | Methods and systems for dynamic code extension | |
CN108241501A (zh) | 一种移动客户端软件实现及更新方法 | |
US20050021801A1 (en) | Dynamic java push controlling apparatus and method | |
CN109725887A (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
US8464218B2 (en) | Method port arrangement and configuration method thereof for robot software component | |
CN108804088A (zh) | 协议处理方法和装置 | |
Zambrano et al. | Aspect-based adaptation for ubiquitous software |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180703 |
|
WD01 | Invention patent application deemed withdrawn after publication |