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:
- Speichern Sie die aktuelle Uhrzeit in Lokale Einstellungen Wenn die App Suspensions ist.
- 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).
- 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>
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
Es gibt keine Möglichkeit, etwas zu tun, wenn die App beim Herunterfahren/Beenden des Geräts beendet wird. – thang2410199