[转载]windows phone 墓碑化(9)

[转载]windows phone 墓碑化(9)

windows phone 墓碑化(9)

[转载]windows phone 墓碑化(9)

几个术语的理解:

名称

说明

Launched

启动新程序的启动

Closed

通过Back按键关闭程序

Deactivated

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

Activated

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

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

[转载]windows phone 墓碑化(9)

生命周期的描述:当我们在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文件中可以找到改变这几个状态时所触发的事件,事件里面有注解就不在详细说明了

[转载]windows phone 墓碑化(9)
ExpandedBlockStart.gif
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键时,可以存储到独立存储空间

        }

复制代码

效果:

[转载]windows phone 墓碑化(9)

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

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

[转载]windows phone 墓碑化(9)
ExpandedBlockStart.gif
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; }

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

[转载]windows phone 墓碑化(9)
ExpandedBlockStart.gif
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 墓碑化(9)

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

转载于:https://www.cnblogs.com/fx2008/archive/2012/11/16/2772747.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110277.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手游服务端架设一条龙_vm服务器

    手游服务端架设一条龙_vm服务器本文作者:smeli(俄罗斯人,于2009年完成该教程)PS:要比国内写的那些教程完整,详细,希望大家喜欢VS运行库安装………………………………………..2SQL数据库安装…………………………………………..3L2Server设置………………………………………………11GM账户创建………………………………………….15运行服务端(1)…

    2022年9月7日
  • nacos和eureka的区别 面试_nacos和eureka比较哪个好

    nacos和eureka的区别 面试_nacos和eureka比较哪个好Eureka架构图:Eureka架构图1.服务注册(register):EurekaClient会通过发送REST请求的方式,向EurekaServer注册自己的服务。注册时,提供自身的元数据,比如ip地址、端口、运行状况指标、主页地址等信息。EurekaServer接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。什么时候注册?在启动微服务的时候。2.服务续约(renew):在服务注册后,EurekaClient会维护一个心跳来持续通知EurekaServer,说明服务一

    2022年8月21日
  • IBM-B24光纤交换机配置zone

    IBM-B24光纤交换机配置zoneB24的配置使用WEB方式,很多时候会出现打不开配置页面的问题,这种情况大多数是因为java或者ie版本的问题,个人推荐使用ie8,java使用1.6.0_25版本。具体配置步骤可参考此链接中的内容https://wenku.baidu.com/view/fb97a8ef0975f46527d3e103.html 转载于:https://blog.51cto.com…

    2022年5月21日
  • EXE文件结构及读取方法

    EXE文件结构及读取方法

    2022年2月3日
  • JAVA编程用什么软件最好_Java编程软件有哪些,Java编程用什么软件好?「建议收藏」

    JAVA编程用什么软件最好_Java编程软件有哪些,Java编程用什么软件好?「建议收藏」“工欲善其事必先利其器”,想要学好Java编程开发,除了要有好的学习资源之外,还要有一套适合自己的Java编程软件,好的编程软件能极大提高你的学习和工作效率。那么,Java编程软件有哪些?Java编程用什么软件好呢?下面整理了一些华清Java学院为大家推荐的Java编程软件。Java编程软件有哪些?1、JDKJDK是java初学时用的,比较麻烦,建议开始学习Java的时候结合记事本使用,可以强迫熟…

    2022年5月10日
  • pycharm专业版 没有试用30天按钮,需要登录的解决方案「建议收藏」

    pycharm专业版 没有试用30天按钮,需要登录的解决方案「建议收藏」pychram在2021年9月30日之后的版本,需要用户登录后才能开启试用;以此来抵制盗版(虽然没有什么用…)新版本是长这样:没有了之前的Evaluateforfree选项;进入的解决方案:注册一个JetBrains帐户;注册地址:https://account.jetbrains.com/login?_ga=2.268514929.1239888694.1637728385-1574465557.1637728385填写邮箱地址后,在邮箱中进行下一步操作;邮箱发送可能有

    2022年10月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号