Android应用程序架构 - 基于事件或分层

Ofi*_* A. 4 java architecture multithreading android

我正在构建一个用于托管应用程序的SDK.该SDK将集成在具有大量用户的应用程序中.

我们开始使用分层架构构建它 - UI,管理器与模型和网络层交互.总共三层.UI正在通过回调获取更新.


旁注:我是团队中的一员,用很多用户构建了一些Android应用程序,在所有这些应用程序中我们使用了相同的分层架构.这些应用程序拥有活跃的用户,直到现在还有很好的反馈.


我们有测试版,似乎一切都按预期工作.

一周前,我们的一位团队成员前来表示他认为我们需要将我们的架构更改为基于事件驱动的架构.我们将在SDK中具有处理所有侦听器的静态事件句柄,并且将从其他组件触发调度.

我认为这有点冒险,我认为在多线程环境中以这种方式处理具有大量依赖性和服务的大型SDK会很困难.另外,因为我们正在构建SDK,所以我们希望将我们的主类从主机应用程序中隔离出来,我认为这几乎是不可能的.

我的问题:

  1. 您认为正确的方法是什么,分层架构是好的,我们需要坚持下去,或者基于事件是首选的?

  2. 您是否认为适合需要尽可能高效的SDK的解决方案?

  3. 你认为这对多线程环境来说是一个很好的解决方案吗?

感谢任何反馈,谢谢.

我读过的一些文章:

架构,Android的最干净的方式

建筑图案 - 移动应用开发

事件驱动编程换机器人

小智 6

Android本身基于基于事件的模型.Android应用程序使用一个名为looper线程的特殊线程,一次从一个事件队列中选择事件,并通过执行其处理程序顺序处理它们.可能存在使用传统同步操作在彼此和looper线程之间通信的附加常规线程.looper线程的主要作用是不断检查其事件队列,一次选择并处理一个事件.

据我所知,Android使用基于事件的模型的主要动机是它必须处理大量事件(触摸屏,点击,传感器,网络,内部和外部事件等)和基于事件的模型选择有意义.

如果您主要关心的是并发性和多任务处理,那么事件驱动反应模型恰好是多线程(或一般的并发)的更好选择.但分层结构也不错,实际上我觉得它更好.

在一天结束时,这取决于工作的性质.如果你认为你的SDK证明了什么,类似于Android的工作(处理大型事件),那么去基于事件的模型,否则分层结构更好.

如果并发(多线程)是您的主要问题,并且您想要利用多核架构并且您的作业是CPU密集型的,那么您应该看到其他架构.

  • 本文定义了第2页的事件,包括所有事件(如传感器输入,网络,操作系统),然后说looper句柄事件(Paper没有单独指定UI事件).所以我认为looper会处理所有事件.如果我错了,请纠正我. (2认同)