앱 다시 시작 방법(DirectX 및 C++)

이 항목에서는 시스템이 DirectX 및 C++를 사용하는 Windows 런타임 앱을 다시 시작할 때 중요한 응용 프로그램 데이터를 복원하는 방법을 보여 줍니다.

resuming 이벤트 처리기 등록

사용자가 앱에서 다른 곳으로 전환했다가 돌아왔음을 나타내는 CoreApplication::Resuming 이벤트를 처리하도록 등록합니다.

뷰 공급자(이 예에서는 DirectXApp)의 IFrameworkView::Initialize메서드 구현에 다음 코드를 추가합니다.



using namespace concurrency;
using namespace Windows::ApplicationModel;
using namespace Windows::ApplicationModel::Activation;
using namespace Windows::ApplicationModel::Core;
using namespace Windows::UI::Core;
using namespace Windows::UI::ViewManagement;

MyViewProvider::MyViewProvider() :
    // class fields
    // ...
    bool m_visible;
    bool m_windowsClosed;
{

}

void MyViewProvider::Initialize(
    _In_ CoreApplicationView^ applicationView
    )
{

   // ...

   CoreApplication::Resuming +=
       ref new EventHandler<Platform::Object^>(this, &MyViewProvider::OnResuming);

   // ...
}

일시 중단 후 표시 콘텐츠 새로 고침

앱에서 Resuming 이벤트를 처리하면 표시 콘텐츠를 새로 고칠 기회가 생깁니다. CoreApplication::Suspending에 대한 처리기를 사용하여 저장한 앱을 복원하고 처리를 다시 시작합니다. 게임 개발: 오디오 엔진을 일시 중단한 경우 이제 다시 시작합니다.


void MyViewProvider::OnResuming(
    _In_ Platform::Object^ /* sender */,
    _In_ Platform::Object^ /* args */
    )
{
    // restore app state, restart rendering/processing and refresh the display
}

CoreWindowCoreDispatcher가 이벤트 메시지를 처리할 때 이 콜백이 발생합니다. 앱의 주 루프(뷰 공급자의 IFrameworkView::Run 메서드에 구현)에서 CoreDispatcher::ProcessEvents를 호출해야만 이 콜백이 호출됩니다 .


// m_visible and m_windowsClose are class-level bool variables on MyViewProvider.

// ...

void MyViewProvider::Run()
{
    // your app's main loop!
    while (!m_windowClosed) // the app window is NOT closed
    {
        if (m_visible) // and if the app window is visible
        {
            CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(
                                                           CoreProcessEventsOption::ProcessAllIfPresent
                                                           );
        }
        else 
        {
            CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(
                                                           CoreProcessEventsOption::ProcessOneAndAllPending
                                                           );
        }
    }
}

설명

사용자가 다른 앱 또는 데스크톱으로 전환할 때마다 시스템에서 앱을 일시 중단합니다. 사용자가 다시 돌아올 때마다 시스템에서 앱을 다시 시작합니다. 시스템에서 앱을 다시 시작할 때, 변수와 데이터 구조의 콘텐츠는 시스템에서 앱을 일시 중단하기 전과 동일합니다. 앱은 중단되었던 곳에서 정확히 복원되므로, 사용자에게는 앱이 배경에서 실행되고 있었던 것처럼 보입니다. 그러나 앱은 상당히 오랜 기간 동안 일시 중단된 것일 수 있으므로, 일시 중단 기간 중에 변경되었을 수 있는 표시 콘텐츠를 새로 고쳐야 하며 렌더링 또는 오디오 처리 스레드를 다시 시작해야 합니다. 이전 일시 중단 이벤트 중에 게임 상태 데이터를 저장한 경우 지금 복원합니다.

관련 항목

앱 일시 중단 방법(DirectX 및 C++)
앱 활성화 방법(DirectX 및 C++)
앱 일시 중단 및 다시 시작에 대한 지침
응용 프로그램 수명 주기(스토어 앱)

 

 

표시:
© 2015 Microsoft