我使用MVP。
假设我要下载大文件(大小约20 MB)。
这里的选项:
在Presenter中下载文件
在模型中下载文件
在服务中下载文件
还有别的
最好的解决方案是什么?
附言活动可以随时摧毁。例如。旋转屏幕时。
最佳答案
我建议您将文件下载到存储库中,该存储库从用例(模型)中调用。
应该从演示者异步调用用例,如果未销毁该视图,则结果将通过回调返回并更新该视图。
但是所有数据都应加载到存储库中(api调用,文件中的数据,gps位置数据等)。这样,您的模型和演示者就不必依赖于数据的加载方式或位置,并且如果数据的来源发生了变化,则不应更改。
如果您决定使用DownloadManager(这可能是最好的解决方案),我认为代码应该在presenter,模型和存储库之外,因为它们应该与平台无关,并且没有android代码。这样,在此文件上执行单元测试变得更加容易。