我使用MVP。
假设我要下载大文件(大小约20 MB)。

这里的选项:


在Presenter中下载文件
在模型中下载文件
在服务中下载文件
还有别的


最好的解决方案是什么?

附言活动可以随时摧毁。例如。旋转屏幕时。

最佳答案

我建议您将文件下载到存储库中,该存储库从用例(模型)中调用。

应该从演示者异步调用用例,如果未销毁该视图,则结果将通过回调返回并更新该视图。

但是所有数据都应加载到存储库中(api调用,文件中的数据,gps位置数据等)。这样,您的模型和演示者就不必依赖于数据的加载方式或位置,并且如果数据的来源发生了变化,则不应更改。

如果您决定使用DownloadManager(这可能是最好的解决方案),我认为代码应该在presenter,模型和存储库之外,因为它们应该与平台无关,并且没有android代码。这样,在此文件上执行单​​元测试变得更加容易。

10-06 05:34
查看更多