ActivityState -- 图库业务单元

ActivityState – 图库业务单元
    很多APK在设计时,会将不同的业务通过不同的Activity呈现处理以达到业务分离的目的;但是在Gallery2的整体框架中,很多业务都是在一个Activity里实现的,比如时间轴、大图浏览、幻灯片浏览。这里先不说Gallery2这么做的动机和好处,后面的篇幅会详细介绍;这里有一个很棘手的问题需要面对:这么多的业务逻辑纠缠在一起,如何抽象业务剥离代码,让代码逻辑清晰、便于维护?
    Gallery2设计了一个很关键的类ActivityState,不同的业务需要继承它来实现各自的业务功能;Gallery2中继承ActivityState实现业务的类习惯上叫XxxPage,比如时间轴的类名就是TimeBucketPage,幻灯片的类名是SlideShowPage,大图界面的类名是PhotoPage;各个不同的业务Page在同一个Activity中交换显示就组成了图库的基本业务功能;比如从时间轴点击缩略图查看图片,就是由TimeBucketPage到PhotoPage的切换。

StateManager – 业务单元管理者
    业务逻辑已经通过ActivityState来分离,那么一个Activity根据不同的业务需求,可能会有2个或者更多的ActivityState子类来实现不同业务,如何管理这些业务之间的切换?比如从时间轴点击缩略图需要进入查看图片界面,在查看图片界面用户按back键需要返回时间轴;
    Gallery2引入了一个管理不同ActivityState的类,叫StateManager,它含有一个ActivityState的栈,用来管理这些不同业务的ActivityState;比如从时间轴点击缩略图查看图片,此时PhotoPage入栈,栈底是TimeBucketPage;在查看图片界面用户按back键返回时间轴,此时PhotoPage出栈,栈顶就是TimeBucketPage了;当栈是空的时候,比如TimeBucketPage也出栈了,那么说明此时没有业务需要处理了,这个Activity可以finish自己了;

猜你喜欢

转载自blog.csdn.net/qq_42894864/article/details/102668409