作者:手机用户2602924833 | 来源:互联网 | 2022-12-05 16:50
当我的应用程序在后台并进入前台时,OnAppearing()方法在IOS中无法工作,或者当手机被锁定然后解锁并且应用程序位于前台时,方法OnAppearing()未被调用,在Android上一切正常.我在下面找到了这个指南,但仍然无法工作,我有最新版本的xamarin表格.
指南:https:
//kent-boogaart.com/blog/hacking-xamarin.forms-page.appearing-for-ios
谁能帮我?
1> SushiHangove..:
如您所见,iOS中的"生命周期"是不同的.一种有用的方法是使用应用程序生命周期并将它们绑定到Page
事件(或命令,如果需要).
在您的Application子类中添加几个公共EventHandler并将它们绑定到OnResume(如果需要,还可以OnSleep)
public partial class App : Application
{
public EventHandler OnResumeHandler;
public EventHandler OnSleepHandler;
public App()
{
InitializeComponent();
MainPage = new MyPage();
}
protected override void OnSleep()
{
OnSleepHandler?.Invoke(null, new EventArgs());
}
protected override void OnResume()
{
OnResumeHandler?.Invoke(null, new EventArgs());
}
}
现在在您的ContentPage
子类中,添加一个处理程序,该处理程序跟踪该页面何时从后台返回,类似于"OnPppearing on OnPause"处理程序...
void Handle_OnResumeHandler(object sender, EventArgs e)
{
Console.WriteLine("OnPauseResumeWithPage");
}
protected override void OnAppearing()
{
(App.Current as App).OnResumeHandler += Handle_OnResumeHandler;
base.OnAppearing();
}
protected override void OnDisappearing()
{
(App.Current as App).OnResumeHandler -= Handle_OnResumeHandler;
base.OnDisappearing();
}
由于`ContentPage`可能在很长一段时间内都没有GC,是的,这可能是正常的...你可以做的是在导航到下一页之前从当前页面手动删除处理程序.