我正在使用GWTP,我的所有演示者都扩展了Presenter类。如果我从A导航到B,然后又回到A,则代替新值,仍然以表格A的形式显示旧值,就像它在显示旧值的副本一样。
如何使应用程序创建Presenters的新实例以避免显示旧值?
最佳答案
Presenter和View的实例化通常很昂贵,因此GWTP建议同时使用这两个实例,因为Presenter将保留实例,使其表现得像内部单例,因此视图是不必要的。在这种情况下,根据您的视图,只需在生命周期阶段“ prepareFromRequest”,“ onReveal”或“ onReset”之一中重置演示者状态即可。
请注意,这样做比看起来容易得多,如果您的视图与演示者不同步(应属于您的情况),只需将代码从更新频率较低的生命周期(例如,construction或onBind)移至然后更新一次(例如onReveal或onReset),则每当您浏览演示者并显示视图时,它将被正确更新,并且单例问题将变得无关紧要。
如果您真的想创建一个非单一的演示者,则可以手动进行绑定,而不是使用AbstractPresenterModule#bindPresenter。如果您尝试在多个位置引用演示者,这可能会有些危险,并且演示者在重置期间也将是相同的,但是我认为这将是每个显示中的新实例。
关于java - GWTP Presenter和View保留旧值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53812726/