一种基于安卓系统的架构设计方法与流程

文档序号:16529221发布日期:2019-01-05 10:36阅读:450来源:国知局
本发明涉及移动互联网
技术领域
:,具体的说,是一种基于安卓系统的架构设计方法。
背景技术
::2012年netflix为了满足他们庞大的用户群体决定重新设计架构来减少rest调用次数。取代几十次的rest调用,让客户端自己处理需要的数据,他们决定基于客户端需求创建一个专门优化过的rest调用。为实现该目标,他们决定尝试响应式,将.netrx迁移到jvm上。2013年,rxjava诞生。2016年,rxjava成为最有前景的安卓开发方式。retrofit也是square公司开发的一款针对android网络请求的框架,其实质就是对okhttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口。随着rxjava的流行,retrofit也迅速推出适配rxjava的类。在rxjava出现之前,安卓采用asynctask和handler来实现异步代码,它们的问题在于当程序随迭代业务逻辑越来越复杂时,出现多层嵌套缩进,代码变得难以维护。而rxjava的出现就解决了这个问题,无论程序逻辑多么复杂,rxjava却能始终保持一条清晰地链式调用,因此如何运用新技术迅速搭建项目架构并降低时间成本成为新的问题。技术实现要素:本发明的目的在于提供一种基于安卓系统的架构设计方法,用于解决现有技术中不能运用新技术快速的搭建项目架构的问题。本发明通过下述技术方案解决上述问题:一种基于安卓系统的架构设计方法,包括采用mvp模式的module模块、bean模块、api模块、binder模块、adapter模块和database模块,所述database模块、api模块和bean模块设置在mvp模式的model层,所述binder模块设置在mvp模式的presenter层,所述adapter模块设置在mvp模式的view层,所述module模块分别设置在mvp模式的presenter层和view层,其中:api模块,包括ixxapi接口,用于请求网络数据,请求网络数据的返回值是observable类型;module模块调用retrofitfactory类获取retrofit类,调用retrofit类访问ixxapi接口获取返回的observable类,retrofit类把请求封装进observable类,module模块在请求结束后调用onnext()或在请求失败后调用onerror();module模块调用register类的register方法注册bean模块的binder类,binder类通过retrofitfactory类调用api模块的ixxapi接口获取网络数据;或调用database模块的xxdao类获取本地存储数据;module模块采用multitypeadater适配器注册binder模块的binder类来显示数据。进一步地,所述module模块包括用于定义presenteror接口和view接口的ixx接口、用于实现presenteror接口具体操作的xxpresenteror类以及用于实现view接口具体操作的xxfragment类和xxview类;所述binder模块的binder类将数据与module模块的xxpresenterer类的multitypeadapter适配器绑定,从而显示数据。进一步地,所述binder类中定义viewholder以及将viewholder与数据的具体操作绑定。进一步地,还包括给所述module模块、bean模块、api模块、binder模块、adapter模块和database模块提供可调用的通用工具类的util模块。进一步地,还包括adapter模块,所述adapter模块自定义适配器,并通过自定义适配器注册binder模块的binder类,进行实现数据的展示。原理:module模块作为view层和presenterer层,调用register类的register方法注册binder模块中的对应binder类,binder类可以通过retrofitfactory类调用api模块的对应api类获取到网络数据,也可以通过调用database模块的对应xxdao类获取本地存储数据。xxdao,其中xx对应业务,dao为数据访问接口(dataaccessobject)。module模块中ixx接口定义view接口和presenterer接口的规范,xxpresenterer类引入ixx接口的presenterer接口,并将其具体实现。xxfragment类、xxview类、xxactivity类采用implements类实现ixx接口的view接口中定义的抽象方法。database模块,xxtable类定义本地存储数据表中的列名,databasehelper类继承sqliteopenhelper,用于连接数据表,帮助创建数据表,执行sql语句,xxdao类根据业务需求写对应数据表数据的具体操作,增删改查;api模块,ixxapi接口即是一个服务,以rxjava+retrofit技术,请求网络数据的返回值是observable类型。在处理业务逻辑的地方调用retrofitfactory类获取到retrofit类,调用ixxapi接口获取到返回的observable类,retrofit类把请求封装进observable类,module模块在请求结束后调用onnext()或在请求失败后调用onerror()。retrofitfactory类实现了缓存机制,即在响应请求后在本地建立一个文件夹用于保存缓存数据,这样在请求数据时,如果判断没有网络,则自动读取缓存的数据,如果判断有网络,则从网络中获取数据并保存到缓存中。binder模块,在view层创建的multitypeadapter适配器都有对应的binder类,binder类为适配器的数据绑定器。binder类继承自itemviewbinder,原来在自定义adapter中实现的自定义viewholder、绑定viewholder与数据的具体操作都在binder类中实现。multitypeadapter适配器调用register类的register方法与binder类连接。module模块的xxfragment类、xxactivity类、xxview类作为view层,xxpresenterer类、binder模块作为presenter层,database模块、api模块、bean模块均属于model层,即采用mvp模式。在mvp模式下,view层并不直接使用model层,它们之间的通信是通过presenterer层来进行的,所有的交互都发生在presenterer层内部,model层和view层被presenterer层完全隔开,view层是完全被动的。本发明与现有技术相比,具有以下优点及有益效果:(1)本发明提供了一种基于安卓系统的mvp模式+rxjava+retrofit架构的方法,采用此架构可以快速的开发项目,缩短开发周期,降低时间成本。(2)本发明采用了缓存的方式,消除了现有技术中由于异步回调函数过多的嵌套,导致代码可读性下降以及出错率提到的问题即消除了callbackhell现象。附图说明图1为本发明的架构图;图2为mvp模式的示意图。具体实施方式下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。实施例1:结合附图1所示,一种基于安卓系统的架构设计方法,包括采用mvp模式的module模块、bean模块、api模块、binder模块、adapter模块和database模块,所述database模块、api模块和bean模块设置在mvp模式的model层,所述binder模块设置在mvp模式的presenter层,所述adapter模块设置在mvp模式的view层,所述module模块分别设置在mvp模式的presenter层和view层,其中:api模块,包括ixxapi接口,用于请求网络数据,请求网络数据的返回值是observable类型;module模块调用retrofitfactory类获取retrofit类,调用retrofit类访问ixxapi接口获取返回的observable类,retrofit类把请求封装进observable类,module模块在请求结束后调用onnext()或在请求失败后调用onerror();module模块调用register类的register方法注册bean模块的binder类,binder类通过retrofitfactory类调用api模块的ixxapi接口获取网络数据;或调用database模块的xxdao类获取本地存储数据;module模块采用multitypeadater适配器注册binder模块的binder类来显示数据。所述module模块包括用于定义presenteror接口和view接口的ixx接口、用于实现presenteror接口具体操作的xxpresenteror类以及用于实现view接口具体操作的xxfragment类和xxview类;所述binder模块的binder类将数据与module模块的xxpresenterer类的multitypeadapter适配器绑定,从而显示数据。进一步地,还包括给所述module模块、bean模块、api模块、binder模块、adapter模块和database模块提供可调用的通用工具类的util模块。进一步地,还包括adapter模块,所述adapter模块自定义适配器,并通过自定义适配器注册binder模块的binder类,进行实现数据的展示。原理:module模块作为view层和presenterer层,调用register类的register方法注册binder模块中的对应binder类,binder类可以通过retrofitfactory类调用api模块的对应api类获取到网络数据,也可以通过调用database模块的对应xxdao类获取本地存储数据。xxdao,其中xx对应业务,dao为数据访问接口(dataaccessobject)。module模块中ixx接口定义view接口和presenterer接口的规范,xxpresenterer类引入ixx接口的presenterer接口,并将其具体实现。xxfragment类、xxview类、xxactivity类采用implements类实现ixx接口的view接口中定义的抽象方法。database模块,xxtable类定义本地存储数据表中的列名,databasehelper类继承sqliteopenhelper,用于连接数据表,帮助创建数据表,执行sql语句,xxdao类根据业务需求写对应数据表数据的具体操作,增删改查;api模块,ixxapi接口即是一个服务,以rxjava+retrofit技术,请求网络数据的返回值是observable类型。在处理业务逻辑的地方调用retrofitfactory类获取到retrofit类,调用ixxapi接口获取到返回的observable类,retrofit类把请求封装进observable类,module模块在请求结束后调用onnext()或在请求失败后调用onerror()。retrofitfactory类实现了缓存机制,即在响应请求后在本地建立一个文件夹用于保存缓存数据,这样在请求数据时,如果判断没有网络,则自动读取缓存的数据,如果判断有网络,则从网络中获取数据并保存到缓存中。binder模块,在view层创建的multitypeadapter适配器都有对应的binder类,binder类为适配器的数据绑定器。binder类继承自itemviewbinder,原来在自定义adapter中实现的自定义viewholder、绑定viewholder与数据的具体操作都在binder类中实现。multitypeadapter适配器调用register类的register方法与binder类连接。module模块的xxfragment类、xxactivity类、xxview类作为view层,xxpresenterer类、binder模块作为presenter层,database模块、api模块、bean模块均属于model层,即采用mvp模式。在mvp模式下,view层并不直接使用model层,它们之间的通信是通过presenterer层来进行的,所有的交互都发生在presenterer层内部,model层和view层被presenterer层完全隔开,view层是完全被动的。尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1