使用MVP在存储库中为多个视图保留数据

时间:2018-03-22 11:53:31

标签: android mvp

我有View1< - > Presenter1< - > Repository。 在某些时刻,我创建View2< - > Presenter2。创建View1时已加载所有必需的数据。我只需要在Presenter2中使用它。我怎样才能做到这一点?我对存储库模式方法更感兴趣。 我应该这样做吗?:

class Repository {
    private val list;

    getData() {
        ...
        list = result;
    }
}

如果是这样,我如何保持list持久,并且在View1View2有效期内不会丢失信息?

我通常会像Repository一样传递Presenter(new Repository)

enter image description here

1 个答案:

答案 0 :(得分:0)

在这种情况下,您最好的方法是使用依赖注入(dagger2)在每个演示者中注入相同的存储库类实例。为此,您可以使您的存储库类成为单例:

<强> Appmodule.java

@Module
public class AppModule {

    ...

    @Provides
    @Singleton
    DataRepository provideDataRepository() {
        return new DataRepository();
    }
}

通过使用Singleton范围,您的存储库对象在整个应用程序中都是唯一的。如果您不知道如何使用匕首,您可以自己创建一个单独的类,但我强烈建议您查找如何使用匕首,因为这将使您的应用程序更加分离并且易于测试。

然后在您的演示者中,您所要做的就是注入存储库的实例。

<强> MyPresenter.java

class MyPresenter{

   private DataRepository repo;

   @Inject
   private MyPresenter(DataRepository repository){
     this.repo = repository;
   }
}