我的应用程序由五个选项卡式页面组成,仅此而已。在启动时,所有这些选项卡页均已构建,并保持这种状态,直到应用程序退出:
public partial class MainPage : TabbedPage
public MainPage()
{
InitializeComponent();
App.cardsPage = new DictionaryTab();
App.homePage = new HomePage();
App.helpPage = new HelpPage();
App.settingsPage = new SettingsPage();
App.phrasesPage = new PhrasesFrame(this);
App.navHomePage = new NavigationPage(App.homePage);
App.navHelpPage = new NavigationPage(App.helpPage);
App.navSettingsPage = new NavigationPage(App.settingsPage);
App.navCardsPage = new NavigationPage(App.cardsPage);
App.navPhrasesFrame = new NavigationPage(App.phrasesPage);
Children.Add(App.navHomePage);
Children.Add(App.navHelpPage);
Children.Add(App.navSettingsPage);
Children.Add(App.navCardsPage);
Children.Add(App.navPhrasesFrame);
}
在四个页面的构造函数中,我正在订阅MessageCenter消息。从我的观察来看,这些构造函数在应用程序的生命周期中仅运行一次。
据我了解,这不是正常的做法,但在这种情况下,它使我可以更新页面,以便稍后查看页面时可以立即获得结果。
在这种情况下,并且仅在这种情况下,我想知道是否会出现问题。我了解,如果页面被多次构造,可能会导致许多问题,例如多重订阅,内存问题等,但是如果它们是选项卡式页面,则在应用程序启动时仅打开一次。那会是一个问题,如果是的话,那会是什么问题?
答案 0 :(得分:1)
您当然可以在这里订阅。但是您将需要在页面/应用程序的生命周期中找到要取消订阅的点。否则,此页面可能永远存在,并泄漏内存。
一个更好的选择可能是在出现时订阅,然后在评论消失时取消订阅。
您还可以在构造函数中进行订阅,而在消失的结构中取消订阅,但是如果页面仅被实例化一次,则订阅事件将不再发生。