2016-04-21 12 views
0

zwei Szenarien heruntergefahren:Was mit dem App-Lebenszyklus passiert, wenn das Gerät

  1. Benutzer das Gerät ausgeschaltet wird, während App läuft.

  2. Das Gerät schaltet sich aus, weil die Batterie während der Ausführung der App schwach ist.

Was passiert mit dem Lebenszyklus? Wenn ich richtig verstehe, wenn der Benutzer die App schließt, wird die App ausgesetzt und dann beendet. Was passiert in beiden Szenarien?

Ich konnte es nicht debuggen, da die App nicht angehalten wird, wenn sie mit einem Debugger verbunden ist.

Antwort

0

Wenn Sie das Gerät ausschalten, während die App ausgeführt wird, wird es beendet.

Sie können den angehaltenen Zustand der App mit Visual Studio debuggen, drücken Sie F5, um in den normalen Debug-Modus zu wechseln. Dann verwenden Sie Lifecycle Events von der oberen Symbolleiste, um ausgesetzte Ereignisse zu debuggen. Mehr über das hier https://msdn.microsoft.com/en-us/library/hh974425.aspx

+0

wusste, dass ich Wie Verwenden der Lebenszyklusereignisse in VS Ich kann das nicht verwenden, um das Herunterfahren des Geräts zu simulieren. Wenn das Gerät heruntergefahren wird, gibt es keine Möglichkeit, etwas zu tun, kurz bevor die App beendet wird. – Nfear

+0

Es gibt keine Möglichkeit, etwas zu tun, wenn die App beim Herunterfahren/Beenden des Geräts beendet wird. – thang2410199

1

Ich habe getestet es auf meinem Computer und windows phone. Basierend auf meinen Testergebnissen verhält sich die App anders nach verschiedene Geräte, wenn das Gerät ausschaltet. Im Folgenden finden Sie meine Testergebnisse:
Für Szenario 1: Benutzer schaltet das Gerät aus, während App ausgeführt wird.
Auf Computer (Edition: Windows 10 Enterprise, Version: 1511, OS Build: 10586.218): App beendet, ohne zu suspendieren.
Auf Windows Phone (Lumia 929 und Lumia 950, Version: 1511, OS Build: 10586.218): App ausgesetzt, dann beendet.
Für Szenario 2: Das Gerät schaltet sich aus, weil die Batterie während der Ausführung der App schwach ist.
Auf Windows Phone (Lumia 929, Version: 1511, OS Build: 10586.218): App ausgesetzt, dann beendet.
Ich habe nicht getestet es auf alle Geräte, so dass Sie die folgenden Testlösung Test auf Ihre eigenen Geräte entsprechend Ihrer Anforderung verwenden können.
Meine Testlösung:

  1. Speichern Sie die aktuelle Uhrzeit in Lokale Einstellungen Wenn die App Suspensions ist.
  2. Schalten Sie das Gerät aus, während die App läuft (Szenario 1), oder warten Sie, bis sich das Gerät ausschaltet, da die Batterie schwach ist, während die App läuft (Szenario 2).
  3. Schalten Sie das Gerät ein, führen Sie die App erneut aus, und laden Sie die Daten aus den lokalen Einstellungen , um die letzte ausgesetzte Zeit herauszufinden.Wenn die letzte ausgesetzte Zeit die Zeit ist, zu der das Gerät heruntergefahren wurde, wurde die App zuerst angehalten und dann beendet. Oder sonst die App nur beendet ohne zu suspendieren.

Mein Testcode:
App.xaml.cs

private void OnSuspending(object sender, SuspendingEventArgs e) 
{ 
    var deferral = e.SuspendingOperation.GetDeferral(); 
    //TODO: Save application state and stop any background activity 
    MainPage.SaveData(); 
    deferral.Complete(); 
} 

MainPage.xaml.cs

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
    } 

    public static void SaveData() 
    { 
     ApplicationData.Current.LocalSettings.Values["txt"] = DateTime.Now.ToString(); 
    } 

    private void btnShowText_Click(object sender, RoutedEventArgs e) 
    { 
     object settingVal = null; 
     if (ApplicationData.Current.LocalSettings.Values.TryGetValue("txt", out settingVal)) 
     { 
      txtToSave.Text = settingVal.ToString(); 
     } 
    } 
} 

MainPage.xaml

<StackPanel> 
    <Button Name="btnShowText" 
      Width="250" 
      Margin="10" 
      Background="Gray" 
      Click="btnShowText_Click"> 
     Get the last suspended time 
    </Button> 
    <TextBox Name="txtToSave" 
      Width="200" 
      Margin="10" 
      HorizontalAlignment="Left" 
      Header="Last suspended time:" 
      IsReadOnly="True" 
      TextWrapping="Wrap" /> 
</StackPanel> 
Verwandte Themen