自从引入片段以来,我一直睁大眼睛,以寻求一个好的解决方案来更新要返回的片段。
这是我的情况:
我有一个活动应用程序。当应用启动时,它会显示一个FirstFragment。单击按钮,用户可以打开SecondFragment。这两个片段都是全屏显示,将通过android的NavController打开。
注意:两个片段都从基于rx的存储库中获取数据。该存储库及其基础类处理所有CRUD操作。
我想做什么:
在用户单击SecondFragment时立即更新FirstFragment,或者换句话说:我要在其从后台开始时立即更新FirstFragment。
问题
FirstFragment如果再次出现,则不会获得回调或生命周期事件。
过去,我通过在onBackPressed活动或广播事件中触发的ListenerInterface解决了此问题。但是,没有更好的解决方案吗?我问是否有可能通过LiveData或通过NavController或其他任何方式。还是有人知道Google如何解决这个问题?
我不想做什么
由于我的数据层基于rx,所以我当然可以在FirstFragment中订阅一个BehaviourSubject。然后,当我切换到SecondFragment时,可以保留未处置的订阅,因此一旦我在BehaviourSubject上调用onNext,FirstFragment将被更新。我看过应用程序正在执行此操作,这对我来说似乎是错误的。我认为,只要另一个ViewModel到位,就应立即取消订阅。
预先感谢