Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ważne interfejsy API
Dowiedz się, jak zapisywać ważne dane aplikacji, gdy system zawiesza aplikację. Przykład rejestruje procedurę obsługi zdarzeń dla zdarzenia Wstrzymanie i zapisuje ciąg w pliku.
Zarejestruj procedurę obsługi zdarzenia wstrzymania
Zarejestruj się, aby obsłużyć zdarzenie wstrzymania
using System;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;
partial class MainPage
{
public MainPage()
{
InitializeComponent();
Application.Current.Suspending += new SuspendingEventHandler(App_Suspending);
}
}
Public NotInheritable Class MainPage
Public Sub New()
InitializeComponent()
AddHandler Application.Current.Suspending, AddressOf App_Suspending
End Sub
End Class
MainPage::MainPage()
{
InitializeComponent();
Windows::UI::Xaml::Application::Current().Suspending({ this, &MainPage::App_Suspending });
}
using namespace Windows::ApplicationModel;
using namespace Windows::ApplicationModel::Activation;
using namespace Windows::Foundation;
using namespace Windows::UI::Xaml;
using namespace AppName;
MainPage::MainPage()
{
InitializeComponent();
Application::Current->Suspending +=
ref new SuspendingEventHandler(this, &MainPage::App_Suspending);
}
Zapisywanie danych aplikacji przed zawieszeniem
Gdy Twoja aplikacja obsługuje zdarzenie Wstrzymanie, ma możliwość zapisania istotnych danych aplikacji w funkcji obsługującej. Aplikacja powinna używać interfejsu API magazynu LocalSettings , aby synchronicznie zapisywać proste dane aplikacji.
partial class MainPage
{
async void App_Suspending(
Object sender,
Windows.ApplicationModel.SuspendingEventArgs e)
{
// TODO: This is the time to save app data in case the process is terminated.
}
}
Public NonInheritable Class MainPage
Private Sub App_Suspending(
sender As Object,
e As Windows.ApplicationModel.SuspendingEventArgs) Handles OnSuspendEvent.Suspending
' TODO: This is the time to save app data in case the process is terminated.
End Sub
End Class
void MainPage::App_Suspending(
Windows::Foundation::IInspectable const& /* sender */,
Windows::ApplicationModel::SuspendingEventArgs const& /* e */)
{
// TODO: This is the time to save app data in case the process is terminated.
}
void MainPage::App_Suspending(Object^ sender, SuspendingEventArgs^ e)
{
// TODO: This is the time to save app data in case the process is terminated.
}
Zwolnij zasoby
Należy zwolnić wyłączne zasoby i dojścia plików, aby inne aplikacje mogły uzyskiwać do nich dostęp, gdy aplikacja jest zawieszona. Przykłady zasobów wyłącznych obejmują kamery, urządzenia we/wy, urządzenia zewnętrzne i zasoby sieciowe. Jawne zwalnianie wyłącznych zasobów i dojść do plików pomaga zagwarantować, że inne aplikacje będą mogły uzyskiwać do nich dostęp, gdy aplikacja jest zawieszona. Po wznowieniu działania aplikacji należy ponownie uzyskać dostęp do zasobów wyłącznych i dojść do plików.
Uwagi
System zawiesza aplikację za każdym razem, gdy użytkownik przełączy się do innej aplikacji lub do pulpitu lub ekranu startowego. System wznawia działanie aplikacji za każdym razem, gdy użytkownik przełączy się z powrotem do niej. Gdy system wznowi aplikację, zawartość zmiennych i struktur danych jest taka sama jak przed zawieszeniem aplikacji przez system. System przywraca aplikację dokładnie tam, gdzie została przerwana, tak aby wyglądała na użytkownika tak, jakby była uruchomiona w tle.
System próbuje zachować aplikację i jej dane w pamięci podczas jej zawieszenia. Jeśli jednak system nie ma zasobów, aby zachować aplikację w pamięci, system zakończy działanie aplikacji. Gdy użytkownik przełączy się z powrotem do zakończonej aplikacji, która była wcześniej zawieszona, system wysyła zdarzenie Aktywowane i powinien przywrócić dane aplikacji za pomocą metody OnLaunched.
System nie powiadamia aplikacji po jej zakończeniu, dlatego aplikacja musi zapisywać dane aplikacji i zwalniać wyłączne zasoby i dojścia plików po jej zawieszeniu i przywracać je po aktywowaniu aplikacji po zakończeniu.
Jeśli wykonasz wywołanie asynchroniczne w obsłudze, sterowanie wraca natychmiast z tego wywołania asynchronicznego. Oznacza to, że wykonanie może następnie wrócić z programu obsługi zdarzeń, a aplikacja przejdzie do następnego stanu, mimo że wywołanie asynchroniczne nie zostało jeszcze ukończone. Użyj metody GetDeferral w obiekcie EnteredBackgroundEventArgs, który jest przekazywany do procedury obsługi zdarzenia, aby opóźnić zawieszenie, dopóki nie wywołasz metody Complete na zwróconym obiekcie Windows.Foundation.Deferral.
Odroczenie nie zwiększa czasu uruchamiania kodu przed zakończeniem działania aplikacji. Opóźnia zakończenie tylko do momentu wywołania metody Complete odroczenia lub do upływu terminu, w zależności od tego, co nastąpi jako pierwsze. Aby przedłużyć czas w stanie wstrzymania, użyj ExtendedExecutionSession
Uwaga / Notatka
Aby poprawić czas reakcji systemu w systemie Windows 8.1, aplikacje mają niski priorytet dostępu do zasobów po ich zawieszeniu. Aby obsłużyć ten nowy priorytet, limit czasu wstrzymania operacji został rozszerzony, aby aplikacja odpowiadała limitowi czasu 5 sekund dla normalnego priorytetu w systemie Windows lub w okresie od 1 do 10 sekund w systemie Windows Phone. Nie można rozszerzyć ani zmienić tego okna limitu czasu.
Uwaga dotycząca debugowania przy użyciu programu Visual Studio: Visual Studio uniemożliwia systemowi Windows zawieszenie aplikacji dołączonej do debugera. Aby umożliwić użytkownikowi przeglądanie interfejsu debugowania Visual Studio podczas działania aplikacji. Podczas debugowania aplikacji możesz wysłać do niej zdarzenie wstrzymania przy użyciu programu Visual Studio. Upewnij się, że pasek narzędzi Lokalizacja Debugowania jest wyświetlany, a następnie kliknij ikonę Wstrzymaj.
Tematy pokrewne
- Cykl życia aplikacji
- Obsługiwanie aktywacji aplikacji
- Obsługa ponownego uruchomienia aplikacji
- Wytyczne dotyczące UX w zakresie uruchamiania, zawieszania i wznawiania
- Rozszerzone Wykonanie