兩種方案與應用程序生命週期會發生什麼:當設備關閉
用戶將設備關閉,而應用程序正在運行。
設備自行關閉,因爲電池電量不足,而應用程序正在運行。
生命週期會發生什麼?如果我理解正確,當用戶關閉應用程序時,應用程序被暫停並終止。在兩種情況下會發生什麼?
我還沒有能夠調試它,因爲應用程序連接到調試器時沒有掛起。
兩種方案與應用程序生命週期會發生什麼:當設備關閉
用戶將設備關閉,而應用程序正在運行。
設備自行關閉,因爲電池電量不足,而應用程序正在運行。
生命週期會發生什麼?如果我理解正確,當用戶關閉應用程序時,應用程序被暫停並終止。在兩種情況下會發生什麼?
我還沒有能夠調試它,因爲應用程序連接到調試器時沒有掛起。
當應用程序運行時關閉設備時,它會終止。
您可以使用Visual Studio調試應用程序的掛起狀態,按F5進入正常調試模式。然後使用頂部工具欄中的Lifecycle Events
來調試暫停的恢復事件。更多的是,這裏https://msdn.microsoft.com/en-us/library/hh974425.aspx
我測試它在我的電腦和窗戶手機上。根據我的測試結果,應用程序的行爲不同根據不同設備當設備關閉。以下是我的測試結果:
對於方案1:用戶在應用程序運行時關閉設備。
在計算機上(版本:Windows 10 Enterprise,版本:1511,操作系統版本:10586.218):應用程序終止而不會暫停。
在Windows Phone上(Lumia 929和Lumia 950,版本:1511,操作系統版本:10586.218):應用程序暫停,然後終止。
對於方案2:設備自行關閉,因爲應用程序運行時電池電量不足。
在Windows Phone(Lumia 929,版本:1511,操作系統版本:10586.218)上:應用程序暫停,然後終止。
我沒有測試了所有設備,因此您可以根據您的要求在自己的設備使用下面的測試解決方案,測試。
我的測試解決方案:
我的測試代碼:
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>
我知道怎麼樣在VS中使用生命週期事件。我不能用它來模擬設備關機。當設備關閉時,在應用程序終止之前無法做任何事情? – Nfear
設備關閉/終止進程時,如果終止應用程序,則無法執行任何操作。 – thang2410199