在Xamarin.iOS中的何处添加计时器?
当我显示页面时,我需要每一分钟发出一次请求,以更新显示的表中的数据。我不知道在哪里添加这个计时器逻辑,因为所有的控制器生命周期方法都应该在适当的时间结束-我猜在Xamarin.iOS中的何处添加计时器?,ios,xamarin,xamarin.ios,Ios,Xamarin,Xamarin.ios,当我显示页面时,我需要每一分钟发出一次请求,以更新显示的表中的数据。我不知道在哪里添加这个计时器逻辑,因为所有的控制器生命周期方法都应该在适当的时间结束-我猜 我应该把计时器放在哪里?既然你说你需要在显示页面后每一分钟发出一次请求,那么好的解决方案是在viewwillappease()方法中启动计时器,并在viewwilldiscover()中停止计时器-它将在ViewController在前台可见时运行。解除OnTimedEvent的绑定对于避免内存泄漏非常重要 这是你需要的还是你有更具体的要
我应该把计时器放在哪里?既然你说你需要在显示页面后每一分钟发出一次请求,那么好的解决方案是在
viewwillappease()
方法中启动计时器,并在viewwilldiscover()
中停止计时器-它将在ViewController在前台可见时运行。解除OnTimedEvent
的绑定对于避免内存泄漏非常重要
这是你需要的还是你有更具体的要求
示例代码:
class MyViewController : UIViewController
{
public MyViewController(IntPtr handle)
: base(handle)
{
}
private Timer timer;
private bool timerEventBinded;
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
if (timer == null)
{
timer = new Timer();
timer.Enabled = true;
timer.Interval = 60000;
}
if (!timerEventBinded)
{
timer.Elapsed += OnTimedEvent;
timerEventBinded = true;
}
timer.Start();
}
public override void ViewWillDisappear(bool animated)
{
if (timer != null)
{
timer.Stop();
if (timerEventBinded)
{
timer.Elapsed -= OnTimedEvent;
timerEventBinded = false;
}
timer = null;
}
base.ViewWillDisappear(animated);
}
private void OnTimedEvent(Object src, ElapsedEventArgs e)
{
//do your stuff
}
}
我猜你必须在
视图中调用并计划计时器将出现:
方法,并在视图中将其无效并设置为nil将消失:
方法。你可以在ViewWillDisplay中启动计时器,但如果你想在应用程序未激活时进行此更新,你必须使用后台提取,并可以告诉iOS你希望更新的频率,但iOS会规定何时允许您进行更新。我建议您添加一些适当的理由来解释为什么OP需要这段代码。只留下一段代码并说“这对我有用”不是一个好答案。@Cheesebaron当然,刚刚添加了。@DavidRiha当应用程序在后台时,这不起作用,而且我相信,用户不希望应用程序在几个小时内保持打开状态。@AkashKava是的,它不起作用。你看过问题了吗?“当我显示页面时,我需要每一分钟发出一次请求,以更新显示的表格中的数据。”在我看来,他/她并不想每分钟更新表格,即使应用程序在后台。