如何在使用Dagger2 + MVP时恢复应用程序状态

时间:2018-04-11 10:52:18

标签: android mvp dagger-2 android-mvp

已编辑2

我有一个包含多个片段的活动。活动管理包含多个步骤的表单,每个步骤都是片段。 我的实现遵循MVP设计模式,我使用Dagger2注入组件(Presenters,Models,...)

在表单的每个步骤中收集的数据存储在Fragment之间共享的唯一对象中。只要活动处于活动状态(使用@ActivityScope并且已注入,因此活动未直接链接到该对象,此对象将保留。

每个Fragment通过他们的模型访问此对象。因此片段,其演示者和活动的演示者都无法直接访问它。

当应用程序被销毁时,Dagger组件(保留Object的实例)将被销毁。当用户返回应用程序时,系统会尝试将应用程序恢复为先前的状态。但是,当从头开始重新创建对象时,用户先前输入的所有数据都将丢失。

如下面的评论所述,我应该使用onSaveInstanceState方法将数据保存在捆绑包中,并在onCreate中恢复它们。 但是由于活动和对象无法直接沟通,我应该如何实现这一目标?

原始问题

  

在我看过的所有教程中(例如this one),Dagger2的组件   由于您通常需要一些对象,因此存储在Application类中   在应用程序的所有生命周期中保持不变。

     

目前我有一个包含多个片段的Activity。活动   管理一个包含几个步骤的表单,每个步骤都是一个片段。

     

我的实现遵循MVP设计模式。收集的数据   在表单的每一步都存储在一个共享的唯一对象之间   片段的主持人。更轻松地管理它而不必通过   手动对象到下一步,直接注入该对象   到片段主持人。该对象具有@ActivityScope并且是   只要活动仍然存在,就会保留。

     

因为我正在使用@Singletons(例如保留Retrofit客户端),所以   活动组件是全局组件的@Subcomponent,由其管理   应用程序如示例中所述。

     

EDITED

     

我遇到的问题是应用程序何时停止以及应用程序和   活动被破坏,当应用程序恢复时,活动和   我所处的片段也已恢复,但我丢失了所有输入的数据   (因为Dagger组件已被破坏)。

     

所以我想知道我应该如何管理它?

0 个答案:

没有答案