设备关闭时应用程序生命周期会发生什么

时间:2016-04-21 13:29:56

标签: win-universal-app

两种情况:

  1. 用户在应用运行时关闭设备。

  2. 当应用程序正在运行时,设备会自行关闭,因为电池电量不足。

  3. 生命周期会发生什么?如果我理解正确,当用户关闭应用程序时,应用程序将被暂停,然后终止。两种情况都会发生什么?

    我无法对其进行调试,因为连接到调试器时应用程序未被暂停。

2 个答案:

答案 0 :(得分:1)

我在计算机 Windows phone 上进行了测试。根据我的测试结果,当关闭时,根据不同设备,应用表现不同。以下是我的测试结果:
对于方案1:用户在应用运行时关闭设备 在计算机上(版本:Windows 10企业版,版本:1511,操作系统版本:10586.218):应用程序终止而不挂起
在Windows Phone上(Lumia 929和Lumia 950,版本:1511,操作系统版本:10586.218):应用程序暂停然后终止
对于方案2:设备关闭,因为应用程序运行时电池电量不足 在Windows Phone上(Lumia 929,版本:1511,操作系统版本:10586.218):应用暂停,然后终止
尚未所有设备上对其进行测试,因此您可以根据需要使用以下测试解决方案在您自己的设备上进行测试
我的测试解决方案:

  1. 将当前时间存储到本地设置应用时 悬浮剂。
  2. 在应用程序运行时关闭设备(方案1),或等待 设备关闭,因为应用程序运行时电池电量不足 (方案2)。
  3. 开启设备,再次运行应用程序,然后从中加载数据 查找上次暂停时间的本地设置。如果是最后一个 暂停时间是设备关闭的时间,然后是 应用程序先被暂停然后终止。或者只是应用程序 终止而没有暂停。
  4. 我的测试代码:
    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>
    

答案 1 :(得分:0)

在应用程序运行时关闭设备时,它会终止。

您可以使用Visual Studio调试应用程序的挂起状态,按F5进入正常调试模式。然后使用顶部工具栏中的Lifecycle Events来调试暂停的恢复事件。关于这一点的更多信息https://msdn.microsoft.com/en-us/library/hh974425.aspx