Windows Phone开发(3):棋子未动,先观全局

2024-03-20 01:32

本文主要是介绍Windows Phone开发(3):棋子未动,先观全局,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在进行WP开发之前,与其它开发技术一样,我们需要简单了解一个WP应用序的生命周期,我们不一定要深入了解,但至少要知道在应用程序生命周期内的每一阶段,我们应当做什么,不推荐哪些操作等,这也是为了让我们开发出更高性能,更优秀的应用程序打下坚实的基础。

下图是官方给出的WP应用程序执行模型图。

在上图中,我们要注意以下四个事件:

1、Launching 事件。

说白了,就是应用程序刚启动时触发的事件,由于这个事件的一点特殊性,尽量不要在该事件处理程序中做大量的操作,比如比较耗时间的作业,为什么呢?你想想,如果你的某个操作需要消耗大量时间的话,那么,你肯定会发现,程序启动的速度很慢,这样一来,用户会很不爽,用户体验就大打折扣。

2、Activated事件。

应用程序被激活时触发,例如,我的程序上面有一个按钮,用户点击后打开发短信的“窗口”,当用户发送完短信后,发短信的页面就关闭,这时候,我们的应用程序又从后台程序变为前台程序了,Activated事件将触发,注意的是,第一次启动程序时是不触发该事件的。

3、Deactivated事件。

与Activated事件相对,比如上面举的例子,当我在程序上点击按钮时,发送短信的页面将启动,这时候,当前应用程序就被前面的发短信的页面挡住了,也就是说,当前程序被发送到后台,这个时刻就触发了Deactivated事件。不过,如果应用程序将关闭,该事件不触发。

4、Closing事件。

从字面意思就猜到该事件在啥时候发生了。对,当应用程序关闭时发生,但在应用程在导航中被发送到后台时不发生,比如刚才说的打开发短信的页面后,虽然程序被发送到后台了,但由于它仍在运行,没有退出,所以这个时候不触发。但如果我从“开始”或桌面磁砖中启动程序后,然后再通过“返回”键回到桌面,这个时候因为程序会退出,所以该事件触发。

为了验证这些事件是如何发生的,我们在app.xaml.cs文件中,分别为这几个事件写下调试输出代码。

        // 应用程序启动(例如,从“开始”菜单启动)时执行的代码// 此代码在重新激活应用程序时不执行;private void Application_Launching(object sender, LaunchingEventArgs e){System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序首次启动。");}// 激活应用程序(置于前台)时执行的代码// 此代码在首次启动应用程序时不执行private void Application_Activated(object sender, ActivatedEventArgs e){System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序被激活。");}// 停用应用程序(发送到后台)时执行的代码// 此代码在应用程序关闭时不执行private void Application_Deactivated(object sender, DeactivatedEventArgs e){System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序休眠。");}// 应用程序关闭(例如,用户点击“后退”)时执行的代码// 此代码在停用应用程序时不执行private void Application_Closing(object sender, ClosingEventArgs e){System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序关闭。");}

然后,我们运行程序,当主页面出现后,点击模拟器上的“返回”键把程序关闭。

这时候,我们再去看一下“输出”窗口。


通过这个实验,我们发现Activated事件和Deactivated事件未被触发,为什么?自己思考吧。

下面,我们在页面中放一个按钮,点击按钮后,打开发送短信的页面。

        <!--ContentPanel - 在此处放置其他内容--><Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"><Button VerticalAlignment="Top"HorizontalAlignment="Center"Content="请点击我"FontSize="64"Click="Button_Click"Margin="0,12,0,0"/></Grid>

编写单击事件代码。

        private void Button_Click(object sender, RoutedEventArgs e){Microsoft.Phone.Tasks.SmsComposeTask sms = new Microsoft.Phone.Tasks.SmsComposeTask();sms.To = "13672265138";sms.Body = "你好啊,今天中午请我吃牛肉炒饭吗?";sms.Show();}

按F5运行,再点击按钮,打开发短信页面。

看看“输出”窗口,这时候,就看到Deactivated事件发生了,因为程序还没有退出,只是被放到后台。

接着,点击模拟器的“返回”,退回到我们的程序。再看看输出窗口。

这个时候,Activated事件就发生了。

OK,今天的牛皮就吹到这里吧。

这篇关于Windows Phone开发(3):棋子未动,先观全局的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827879

相关文章

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务