如何在Android开发的MVP模式中控制MultiThreading?

时间:2015-07-10 03:21:41

标签: android multithreading mvp

最近,我尝试在我的android项目中使用System.arrayCopy() Pattern。

我知道我无法在MVP图层中执行商务逻辑工作。 View必须将所有作品投放到View图层,然后等待Presenter的结果。

Presenter应该在UI线程中执行任何操作。但是View可以在Presenter中执行某些操作。

如何在Sub-Thread布局和View图层中控制MultiThreading?

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

您需要沟通两个方向:

a)非UI到UI线程

b)UI线程到非UI线程。

对于第一种情况,这些天流行的方式是使用 runOnUiThread()

以下是对此技术和其他常用选项的一个很好的调查:

http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/

至于另一个方向,除非你有慢速阻塞操作,否则通常不需要。这是一个清洁组织源代码的问题。将结果从View发送回Presenter的现代技术是在“与活动通信”部分中使用Fragments中的自定义接口:

http://developer.android.com/guide/components/fragments.html

请注意,您不应该在UI线程上放置长时间运行的操作,因为它会让您的应用程序感到迟钝。如果它们需要超过50毫秒左右,请尝试在不同的线程上运行它们。

答案 1 :(得分:0)

Android已经分离了UI和控制器(或Presenter)的功能。真正的工作是将它更加分离,使其更加强大地遵循MVP模式。该视图与您的演示者分开。除非你出于某种原因想要,否则你不再需要为此做线程。

当我说将它分开得更远时,我只是意味着实现一个抽象数据处理的结构,以便能够轻松地重复使用或更改。