假设我的活动A中有一个RecyclerView。这个RecyclerView是动态的,只要有新的信息(将解释更多),它就会更新。单击某个项目后,它会转到另一个活动B.因此,假设活动A有新信息。我通过(Parse)通知接收此信息。
在活动B上,我应该使用什么方法来更新活动A上的RecyclerView,假设我想让它一直保持活动状态?
目前,我有对适配器的静态引用,我使用活动B中的静态引用更新更新程序。但我觉得这不是一个好的设计/方法,因为除非非常必要,否则不应使用静态引用(对?)。例如,在这种情况下,Service / ServiceIntent是否更有用/更好的方法?
感谢您的帮助!
答案 0 :(得分:2)
静态参考与服务
除了将苹果与香蕉进行比较之外,你使用静态引用做错了,导致内存泄漏(尝试使用LeakCanary ...)。您应该使用EventBus(如GreenRobot's,OTTO)将数据分发到应用程序的各个组件。
答案 1 :(得分:0)
您可以使用维护数据信息的单例类,而不是保留适配器的静态引用。因此,从活动B ,您可以更新单例类,在活动A onResume方法中,您可以更新或刷新回收视图。 Singleton类不会导致内存泄漏,除非您在任何活动refer this
中保留静态引用答案 2 :(得分:0)
您可以使用接口回调来更新适配器。 1.在ActivityB中定义一个公共接口 2.在ActiivtyB中为init实例定义一个静态的接口实例和一个静态方法。 3.在ActivityA中调用静态实例init方法oncreate并在接口方法中实现你的代码。 4.通过调用instance.method在ActivityB中更新你的适配器。