Android客户端如何设计架构

当我们在新开发一款APP时,我们在初期要如何设计架构呢?在这里我根据我的经验,总结了一些基本的架构思路。

客户端架构设计的时候,首先需要充分考虑到所开发的app的类型,这里我分为功能型和服务型两大类,功能型的app侧重业务和功能,服务型的app侧重服务和运算。下面我就具体来讲讲针对这两种类型的通用架构。

功能型app

功能型app的activity比较多,整个app都以一个个activity承载业务和功能,在设计这类app时,我们需要考虑哪些要素呢?

由于activity比较多,我们需要考虑页面的跳转路由,这里会有人说直接用startactivity就可以实现页面的跳转呀,但是一款APP我们在设计的时候,通常都是多module的架构,这样可以把不同的模块放在不同的module里面,实现解耦,不同的module之间想要实现activity的跳转,就需要采用路由协议了。在路由框架这一块,阿里的ARouter算是用的比较多的一款开源框架,当然我们也可以自己实现,路由框架也不是很复杂。

其次,不同的activity之间需要通信,常见的线程间的通信工具有handler,回调,以及以生产者消费者为代表的时间总线,或者是开源的eventbus这一类的事件总线,我们要根据业务类型已经想要达到的解耦标准,来选择设计一种或者多种通信工具。进程间的通信方式有AIDL,内容提供者等Android原生提供的以binder为基础的通信方式,我们也可以自己设计socket或者网络等方式来进行进程间通信。

由于业务比较多,我们还需要考虑如何沉淀公共组件等自定义View,以我们用来支撑我们业务的通用sdk,如埋点sdk,性能监控,分享sdk等等。

将我们的App需要涉及到的因素考虑完整,那么我们就从下至上的去设计我们app的架构了,最底层的,应该是网络层,网络层之上,是支撑技术和功能的支撑层,公共库包含路由工具,日志打点上报工具,常用的方法库,性能检测工具以及其他的sdk,支撑层之上的,是一些通用的组件和ui库,我称之为通用组件层,这一层包含了我们自定义的view,如下拉刷新的recyclerview等,通用层之上,就是我们的业务层了。
在这里插入图片描述

下面我来一一详细介绍这四层

  • 网路层:网络层是最底层的东西,我们支撑层的许多sdk需要用到,比如日志上报,推送sdk等等,业务层也需要用到,目前比较流行的网络框架有Okhttp,retrofit,volley等等,有兴趣的可以自行研究一下。
  • 支撑层:支撑层使我们的技术和功能的支撑,这一层的东西很多,我们通用的工具类,或者第三方的分享sdk,推动sdk,或者是通信sdk,如eventbus等。上层的业务可能会用到的,这些都需要沉淀到支撑层来。
  • 组件层:这一层一般是通用的自定义组件。
  • 业务层:业务层就设计到我们具体的业务了,一般以包名来区分不同的业务。

这四层,我们一般都单独放在不同的module,网络层可以和支撑层放在一个module里面,组件层的module引用支撑层的module,业务层的module引用组件层的module。

这只是一个通用的功能型的app的架构,我们一般都会根据这一基础,结合自身的业务做扩展,比如业务非常的庞大的,那么业务层我们可以做插件化或者bundle化。

服务型的app

服务型的app相比于功能性的app,service会更多一点,而业务会相对薄弱一点,所以我们在支撑层和组件层之间多了一个服务层,服务层的service可以是常驻的,也可以是非常驻的,既可以是实现继承自系统的service服务,也可以是我们自己设计的service服务,我们可以用servicemanager来将服务层中的service服务统一管理起来。
在这里插入图片描述

总结

但在实际设计一个大型的App架构,所要考虑的东西远比上面的多,架构也会比上面的通用的设计要复杂很多。但如果我们能熟悉一般通用的APP的架构设计,对我们在设计需要特殊架构,或者比较复杂的大型的APP的架构时,也会有很多参考价值。

猜你喜欢

转载自blog.csdn.net/tyuiof/article/details/106159040
今日推荐