首先,谁是V?谁是P?(M我认为不是问题)
View,应该是实现显示逻辑,在Android开发中,我们认为Fragment、Activity都可以被当做View,他们主要任务就是控制显示逻辑,这部分代码不太经常重用。View通过调用P的业务逻辑,来实现业务。业务包括同步的业务(可以在UI线程操作)和异步的任务(如网络、磁盘IO等耗时操作),并根据P的业务返回结果来响应地改变UI。
对Presenter的实现,我们用AndroidAnnotations框架的EBean实现(如果不熟悉这个框架,请Google)。对于异步任务,通过AA的@Background标签来做,他的实现原理是讲任务通过一个线程池进行调度。对异步任务的返回结果,我们自定义了一个View标签,通过接口回调回去(View甚至可以不实现接口,当然就没有回调了)。这样无论View调用Presenter,还是Presenter回调View,都是通过接口实现,完全剥离了两者之间的耦合,P层的业务可以高度重用。
为了实现这个目标,我们对AndroidAnnotations做了一点扩展,Github地址在:https://github.com/ChatGame/androidannotations
时间: 2024-10-21 20:10:58