windows phone 墓碑化(9)

原文:windows phone 墓碑化(9)

几个术语的理解:

 

名称

说明

Launched

启动新程序的启动

Closed

通过Back按键关闭程序

Deactivated

一个正在程序运行,此时按start键,程序停用,此后进入墓碑化

Activated

程序从墓碑化复活,即激活

那么我们程序的生命周期也就大致显示出来了:

 

 

生命周期的描述:当我们在start页面运行一个程序A时,此时程序A进入启动(Launched)阶段,启动完成之后,程序一般会相当长的时间处于running状态,如果此时你按Back键,则直接进入Closed状态,还有就是在运行过程中有突发事件,比如来电话,来信息,或者你需要运行程序B,你就按Start键,在按Start键的时候处于Deactivated状态,然后在运行程序B的过程中,程序A一直处于Tombstoning墓碑化状态(除非你从Start页重新启用程序A的新实例),在操作程序B的过程中你如果长按Back键,系统会调出卡片式任务管理器,里面就会包含程序A,程序B,Start页面,如果点击程序A,此时程序A就会被激活,进入运行状态,之至改程序被关闭,程序A的生命周期就完成了;

 在App.xaml.cs文件中可以找到改变这几个状态时所触发的事件,事件里面有注解就不在详细说明了

View Code

// 应用程序启动(例如,从“开始”菜单启动)时执行的代码
        // 此代码在重新激活应用程序时不执行
        private void Application_Launching(object sender, LaunchingEventArgs e)
        {
            //可以从独立存储空间读取资料进行初始化
        }

        // 激活应用程序(置于前台)时执行的代码
        // 此代码在首次启动应用程序时不执行
        private void Application_Activated(object sender, ActivatedEventArgs e)
        {
            //可以恢复临时数据
           
           
        }

        // 停用应用程序(发送到后台)时执行的代码
        // 此代码在应用程序关闭时不执行
        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
        {
            //存储临时数据,以便用户从墓碑化状态激活
            
        }

        // 应用程序关闭(例如,用户点击“后退”)时执行的代码
        // 此代码在停用应用程序时不执行
        private void Application_Closing(object sender, ClosingEventArgs e)
        {
            //程序按Back键时,可以存储到独立存储空间
        }

效果:

 

那么下面的案例就是在用户关闭程序后,在从任务管理器中重新激活或者通过Back键返回到程序,进行数据的暂存;其实就是让用户感觉不到程序已经关闭了,当用户程序回到程序时,和用户离开时呈现出来的相一致;

 由于MainPage.xaml页面没有任何修改,所以没有贴出,MainPage隐藏文件代码:

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
//
using Microsoft.Phone.Shell;

namespace Tombstoned
{
    public partial class MainPage : PhoneApplicationPage
    {
        int sum = 0;
        App ap = (App)Application.Current;
        // 构造函数
        public MainPage()
        {
            InitializeComponent();
        }
        //经验证此方法只有在程序启动的时候才加载
        private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            //this.ApplicationTitle.Text = ap.appKey;
        }
        protected override void OnManipulationStarted(ManipulationStartedEventArgs e)
        {
            sum++;
            //程序标题处显示
            this.PageTitle.Text = sum.ToString();
            ap.appKey = this.PageTitle.Text;
            base.OnManipulationStarted(e);
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            if (!string.IsNullOrEmpty(ap.appKey))
            {
                this.PageTitle.Text = ap.appKey;
            }
         
            base.OnNavigatedTo(e);
        }
       
    }
}

 从上面代码中可以看出我们是把数据保存到App类中的一个公共属性中了,我们在触摸事件中把自加的数值赋值于App公共属性appKey,在MainPage页面加载后调用OnNavigatedTo方法进行初始化,可以看出我们把临时数据保存在App类中了,那么App类中是怎么实现的那;App类隐藏文件中添加的代码如下:

 public string appKey { get; set; }

 即保存数据的公共属性,其中我们用到的两个方法,并把他们实现:

View Code

  // 激活应用程序(置于前台)时执行的代码
        // 此代码在首次启动应用程序时不执行
        private void Application_Activated(object sender, ActivatedEventArgs e)
        {
            //可以恢复临时数据
            object str=string.Empty;

            if (PhoneApplicationService.Current.State.TryGetValue("key", out str))
            {
                appKey=str.ToString();
            }
           
        }

        // 停用应用程序(发送到后台)时执行的代码
        // 此代码在应用程序关闭时不执行
        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
        {
            //存储临时数据,以便用户从墓碑化状态激活
            PhoneApplicationService.Current.State["key"] = appKey;
        }

 可以看到我们是在用户遇到突发事件(如电话)时用PhoneApplicationService.Current.State进行存储的,并在用户通过任务管理器或者Back键时激活改程序,并用

PhoneApplicationService.Current.State.TryGetValue方法获取值,该方法的好处是不会报出异常信息;任务管理器的的效果图:


 

 

 windows phone 7 对多个应用程序的管理:windows phone 7 是通过栈对多个程序进行管理的,当我们运行程序A的时候,如果我们需要运行程序B,那么我们会按Start键,Start键就会把程序A压入栈中(此时程序A是停止运行的),如果需要运行程序C,同样程序B也会被压入栈中,那么按Back键就会把当前程序C终止,并从栈中获得最后一个压入程序B,进行激活使用;

 

源码

 

时间: 2024-09-20 09:04:28

windows phone 墓碑化(9)的相关文章

windows 7正版化授权过期的解决方案

最近工作忙碌,很少关注到新闻.微软 windows 7正版化给自己演了一场苦恼剧,今天上班,偷了点空闲时间正在写blog,突然机器自动重启.晕!写了一半blog没保存都成泡沫.以为是内存问题,就找网管换了一根.过了几个小时,又自动重启,oh!my gay .不管是cpu温度过高,还是显卡驱动或者松动.系统中毒.一般都会死掉也不会突然自动重启.这个时候已经快下班了.等明天解决.回到家也开了电脑上网.过几个小时,电脑也突然黑屏自动重启.想了想不对劲.后来想到前一两天一个朋友问我帮他解决windows

windows phone 页面导航(6)

原文:windows phone 页面导航(6) 页面导航的例子我们使用的是两个页面,从第一个页面(MainPage)导航到第二个页面(SecondPage),然后可以从第二个页面导航到第一个页面 ,使用的os 7.1: 页面导航没有引入新的命名空间使用的到属性是派生于PhoneApplicationPage类;   MainPage.xaml 文件中用到的代码为:   <Grid x:Name="ContentPanel" Grid.Row="1" Marg

移动界面扁平化设计:扁平化的设计理念

文章描述:总而言之,拟物化有拟物化的优点,扁平化有扁平化的长处,只有两者相结合,才能使易用性与简洁性得到更好的体现. 如果UI 界面使用了拟物化的风格,看起来跟生活实物一模一样,你一定会有按下去的欲望;而扁平化思想是一种让设计者在界面设计过程中减少信息层级的思想 当下 UI 设计的扁平化浪潮可谓如日中天,从微软的 Windows 8 开始,还有后来 Google 的 Android,到现在的苹果 iPhone 的 iOS,都采用了扁平化的设计理念.可是,你真的理解什么是扁平化吗?这不禁要画上一个

Delphi模拟最小化恢复关闭按纽

我们做多文档应用程序开发时,如果在主From中指定mainMenu时,在主菜单上右角上会自动出现最小化,恢复,关闭按纽,但主菜单放入Toolbar等中时,该三个按纽不会自动出现,因此需要编程实现. 实现原理: 按纽的实现,从Tbitbtn继承下来最理想,但需要过滤TbitBtn的焦点响应消息,使其不能获得焦点状态. 按纽的功能的实现是比较关键的,Delphi中提供了标准action对象(Twindowclose)来实现关闭当前激活的子窗体的功能. 当没有提供最小化及恢复功能的Action,因此有

Mac和Windows电脑哪个好

  Mac和Windows电脑哪个好         苹果Mac系列电脑一直属于小众化产品,使用的人较少.有些朋友给使用Macbook系列电脑的朋友打上"装X"."华而不实"等标签,而使用MacBook的用户却觉得微软系统又难用UI又丑,在此笔者理清苹果Mac电脑和其他PC之间的几个重要区别,以帮助读者更清楚得选择更适合自己的电脑. 价格区别 可以说,在相同的配置下,Mac电脑几乎比其他电脑贵一倍. 苹果官网报价 比如苹果最近新推出的Macbook Pro笔记本电脑

Windows 7怎么安装DirectX 11.1?

  几天前,有消息称DirectX 11.1仅支持最新的Windows 8.Windows RT和Windows Server 2012,微软暂时没有为Windows 7提供DirectX 11.1的计划. 这一消息引起了众多Windows 7用户的不满,为了平息众怒,微软特意在官方博客中进行了澄清.在今天发布的一篇官方博客中,微软表示,他们其实悄悄为Windows 7提供了一种方法,用户可以获取部分DirectX 11.1功能.这个秘密功能就隐藏在昨日为Windows 7用户发布的IE10中.

Windows系统操作密集60招

  1.如果同时有多个窗口打开,想要关闭的话,可以按住shift不放然后点击窗口右上角的关闭图标. 2.在保存网页前,可以按一下"ESC"键(或脱机工作)再保存,这样保存很快 3.用电脑听CD可以不用任何的播放软件,把音箱线直接接到光驱的耳机孔,放入CD,按光驱上的play键就可以直接听了,这样听歌可以不占用系统资源.(如果你的电脑坏了,不能启动或什么的,一时放在那不能修,千万不要浪费资源,把用里面的电源给光驱通上电,就可以暂时做CD机了. 4.MSN中发消息的时候是按enter的,如

140个Windows XP技巧

  1. 重装Windows XP不需再激活 如果你需要重装Windows XP,通常必须重新激活.事实上只要在第一次激活时,备份好WindowsSystem32目录中的Wpa.dbl文件,就不用再进行激活的工作了.在重装Windows XP后,只需要复制该文件到上面的目录即可. 2. 如何知道自己的Windows XP是否已激活 打开开始→运行,在bomb出的对话框中输入:oobe/msoobe /a,回车后系统会bomb出窗口告诉你系统是否已经激活. 3. 关闭zip文件夹功能 你是不是觉得

各种窗口最小化快捷键详解

  一.ALT+Esc 可以使当前窗口最小化. 二.Win+D 最小化所有窗口,再按一下就可以还原窗口. 三.Windows+M 最小化所有窗口 . 四.Windows+Shift+M 还原最小化的窗口. 五.Alt+空格+N 最小化当前窗口(和浏览器的最小化一样) 六.ALT+TAB 这个是切换窗口的按钮,切换到另外一个窗口,这个窗口自然也可以最小化.