다음을 통해 공유


Xamarin.iOS에 대한 애플리케이션 수명 주기 데모

이 문서 및 샘플 코드는 iOS의 네 가지 애플리케이션 상태와 상태가 변경될 때 애플리케이션에 알리는 메서드의 AppDelegate 역할을 보여 줍니다. 애플리케이션은 앱 상태가 변경될 때마다 콘솔에 업데이트를 출력합니다.

샘플 앱

앱이 상태를 변경할 때마다 앱이 콘솔에 업데이트를 출력합니다.

연습

  1. LifecycleDemo 솔루션에서 수명 주기 프로젝트를 엽니다.

  2. 클래스를 AppDelegate 엽니다. 애플리케이션의 상태가 변경된 시기를 나타내기 위해 수명 주기 메서드에 로깅이 추가되었습니다.

    public override void OnActivated(UIApplication application)
    {
        Console.WriteLine("OnActivated called, App is active.");
    }
    public override void WillEnterForeground(UIApplication application)
    {
        Console.WriteLine("App will enter foreground");
    }
    public override void OnResignActivation(UIApplication application)
    {
        Console.WriteLine("OnResignActivation called, App moving to inactive state.");
    }
    public override void DidEnterBackground(UIApplication application)
    {
        Console.WriteLine("App entering background state.");
    }
    // not guaranteed that this will run
    public override void WillTerminate(UIApplication application)
    {
        Console.WriteLine("App is terminating.");
    }
    
  3. 시뮬레이터 또는 디바이스에서 애플리케이션을 시작합니다. OnActivated 는 앱이 시작될 때 호출됩니다. 이제 애플리케이션이 활성 상태입니다.

  4. 시뮬레이터 또는 디바이스의 홈 단추를 눌러 애플리케이션을 백그라운드로 가져옵니다. OnResignActivationDidEnterBackground 앱이 상태를 전환할 InactiveBackgrounded 때 호출됩니다Active. 백그라운드에서 실행할 애플리케이션 코드 집합이 없으므로 애플리케이션은 메모리에서 일시 중단된 것으로 간주됩니다.

  5. 앱으로 다시 이동하여 포그라운드로 다시 가져옵니다. WillEnterForegroundOnActivated 둘 다 호출됩니다.

    콘솔에 인쇄된 상태 변경 내용

    뷰 컨트롤러의 다음 코드 줄은 애플리케이션이 백그라운드에서 포그라운드에 들어갔을 때 실행되고 화면에 표시되는 텍스트를 변경합니다.

    UIApplication.Notifications.ObserveWillEnterForeground ((sender, args) => {
        label.Text = "Welcome back!";
    });
    
  6. 단추를 눌러 애플리케이션을 백그라운드에 배치합니다. 그런 다음 홈 단추를 두 번 탭하여 애플리케이션 전환기를 표시합니다. i전화 X에서 화면 아래쪽에서 위로 살짝 밉다.

    애플리케이션 전환기

  7. 앱 전환기에서 애플리케이션을 찾아 위로 살짝 밀어 제거합니다(iOS 11에서는 모서리에 빨간색 아이콘이 나타날 때까지 길게 누릅니다.)

    위로 살짝 밀어 실행 중인 앱 제거

iOS는 애플리케이션을 종료합니다. 애플리케이션이 WillTerminate 백그라운드에서 이미 일시 중단되었기 때문에 호출되지 않습니다.