[原创]WB Android客户端架构总结:发WB工做队列设计

先简单说下需求,发一条WB包含多种类型,例如图片、视频、文字等,发送工做不能阻塞UI,工做队列易于扩展,方便优化。框架

几个重要的类:优化

JobManager:统一管理Job列表,包括job的添加、启动、终止等等;线程

Job:具体工做类的基类,一个Job对应多个Operatoin,除了维护每一个Operation,还管理着本身的各类状态;设计

Operation<Result>:该类实现了RunnableFuture和Callable,是真正执行操做任务的基类,为了易于扩展,将返回类型设计为泛型。Operation之间能够相互依赖,当A依赖B时,B任务执行完A才会开始执行;视频

OperationExecutor:继承自ThreadPollExecutor,是执行Operation的线程容器。blog

下面是结构图:继承

熟悉类之间的结构后,下面是一个典型调用过程的流程图:队列

 

结构大体就是这样,总结一下,首先将Job细分红多个Operation,可以增长Operation的复用性,而且每一个类型的Operation运行在独立线程,而Job只负责对不一样Operation的组合方式,使框架更加容易扩展。缺点也比较明显,层次太多,增长回调通知的复杂度(各类Listener),好比Operation之间的回调通知,Operation与Job之间的回调,等等。图片

相关文章
相关标签/搜索