Ponieważ mówisz, że musisz wysyłać żądanie co minutę po wyświetleniu strony, dobrym rozwiązaniem jest uruchomienie licznika czasu w metodzie ViewWillAppear()
i zatrzymanie go w ViewWillDisappear()
- będzie działać tylko wtedy, gdy ViewController jest widoczny na pierwszym planie . Rozłączenie OnTimedEvent
jest ważne, aby uniknąć wycieku pamięci.
Czy tego właśnie potrzebujesz, czy masz jakieś bardziej szczegółowe wymagania?
Przykładowy kod:
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
}
}
Chyba trzeba zadzwonić i harmonogram czasowy od 'viewWillAppear:' metoda & unieważnić i ustawić go do zera w 'viewWillDisAppear:' metody. –
Możesz uruchomić timer w viewWillAppear, ale jeśli chcesz, aby ta aktualizacja wystąpiła, gdy aplikacja nie jest aktywna, musisz użyć funkcji pobierania w tle i możesz powiedzieć systemowi iOS, jak często chcesz aktualizować, ale system iOS dyktuje, kiedy pozwoli Ci to na aktualizacja. –