已编辑2
我有一个包含多个片段的活动。活动管理包含多个步骤的表单,每个步骤都是片段。 我的实现遵循MVP设计模式,我使用Dagger2注入组件(Presenters,Models,...)
在表单的每个步骤中收集的数据存储在Fragment之间共享的唯一对象中。只要活动处于活动状态(使用@ActivityScope
并且已注入,因此活动未直接链接到该对象,此对象将保留。
每个Fragment通过他们的模型访问此对象。因此片段,其演示者和活动的演示者都无法直接访问它。
当应用程序被销毁时,Dagger组件(保留Object的实例)将被销毁。当用户返回应用程序时,系统会尝试将应用程序恢复为先前的状态。但是,当从头开始重新创建对象时,用户先前输入的所有数据都将丢失。
如下面的评论所述,我应该使用onSaveInstanceState
方法将数据保存在捆绑包中,并在onCreate
中恢复它们。
但是由于活动和对象无法直接沟通,我应该如何实现这一目标?
原始问题
在我看过的所有教程中(例如this one),Dagger2的组件 由于您通常需要一些对象,因此存储在Application类中 在应用程序的所有生命周期中保持不变。
目前我有一个包含多个片段的Activity。活动 管理一个包含几个步骤的表单,每个步骤都是一个片段。
我的实现遵循MVP设计模式。收集的数据 在表单的每一步都存储在一个共享的唯一对象之间 片段的主持人。更轻松地管理它而不必通过 手动对象到下一步,直接注入该对象 到片段主持人。该对象具有
@ActivityScope
并且是 只要活动仍然存在,就会保留。因为我正在使用
@Singletons
(例如保留Retrofit客户端),所以 活动组件是全局组件的@Subcomponent
,由其管理 应用程序如示例中所述。EDITED
我遇到的问题是应用程序何时停止以及应用程序和 活动被破坏,当应用程序恢复时,活动和 我所处的片段也已恢复,但我丢失了所有输入的数据 (因为Dagger组件已被破坏)。
所以我想知道我应该如何管理它?