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