페이지를 표시 할 때마다 1 분마다 요청 된 테이블의 데이터를 업데이트해야합니다. 모든 컨트롤러 라이프 사이클 메소드가 적절한 시간에 끝나야하기 때문에이 타이머 로직을 어디에 추가해야할지 모르겠다.Xamarin.iOS에서 타이머를 추가 할 위치는 어디입니까?
어디서 타이머를 넣어야합니까?
페이지를 표시 할 때마다 1 분마다 요청 된 테이블의 데이터를 업데이트해야합니다. 모든 컨트롤러 라이프 사이클 메소드가 적절한 시간에 끝나야하기 때문에이 타이머 로직을 어디에 추가해야할지 모르겠다.Xamarin.iOS에서 타이머를 추가 할 위치는 어디입니까?
어디서 타이머를 넣어야합니까?
페이지를 표시 한 후 1 분마다 요청해야한다고 말하는 것이므로 ViewWillAppear()
메서드에서 타이머를 시작하고 ViewWillDisappear()
에서 중지하는 것이 좋습니다. ViewController가 포 그라운드에서 표시 될 때만 실행됩니다. . 메모리 누출을 방지하려면 OnTimedEvent
의 바인딩을 해제해야합니다.
당신이 필요로하는 것이거나 좀 더 구체적인 요구 사항이 있습니까?
샘플 코드 : 나는 당신이`viewWillAppear에서 호출 및 예약 타이머해야 할 것 같아요
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
}
}
이 코드가 OP가 찾는 이유에 대한 적절한 추론을 추가하는 것이 좋습니다. 코드 조각을 남겨두고 "이 작품은 나를 위해"라고 말하는 것은 좋은 대답이 아닙니다. – Cheesebaron
@Cheesebaron 물론 추가되었습니다. –
@DavidRiha 앱이 백그라운드에서 작동하지 않습니다. 사용자가 앱을 몇 시간 동안 열어 두지 않을 것으로 예상됩니다. –
:'방법 및 무효화 및'viewWillDisAppear에서 전무로 설정 :'방법. –
viewWillAppear에서 타이머를 시작할 수 있지만 앱이 활성화되지 않은 상태에서이 업데이트가 발생하게하려면 백그라운드 가져 오기를 사용해야하고 iOS에 업데이트 빈도를 알릴 수 있지만 iOS가 업데이트를 허용 할시기를 지정합니다 최신 정보. –