在某些更改时通知所有在backstack中的片段的最佳做法是什么?
我尝试使用EventBus
并且每个Fragment订阅该事件,然后当发生更改时,主要活动将post事件发送给所有订阅者。
仅onDestroy
我取消订阅已销毁的片段。
我不喜欢这个解决方案,因为如果背斜堆中有很多碎片,那么它可能很重,很多听众都会这么做。
我的应用程序,无限深入,从你替换的一个片段到另一个(并添加到backstack),你可以再次替换(并添加到backstack)等等......,没有结束。
答案 0 :(得分:0)
一种可能的解决方案是将一些数据放入共享首选项中,并在片段onResume
中读取它。
或者您可以将这些信息放在其他部分,例如配置服务器或外部服务
显然,如果这些片段属于同一个活动,您可以将信息输入到您的活动中,那么您可以从该附加活动中读取它。
对于远程提取的数据
您可以将数据放入仅负责保存数据的单例类中。请记住,在android中,单例可以在某些限制情况下被销毁,所以当你的片段返回前台时检查单例是否为空并最终重复你的提取调用
您可以看到示例here