设为首页 收藏本站
查看: 914|回复: 0

Windows Phone 7 Tip

[复制链接]

尚未签到

发表于 2015-5-9 11:40:06 | 显示全部楼层 |阅读模式
  在开发一个多页面的Windows Phone 7应用程序的过程中,偶然发现与页面导航(Page Navigation)有关的一些潜在“秘密”。
  
  在我的应用中,页面 A 的程序响应某按钮的点击事件,通过 NavigationService.Navigate() 方法跳转到另一个页面 B。而在 B 页面中的 OnNavigatedTo 事件中,根据业务逻辑的需要,会进行一些判断,然后在一些业务数据不满足条件的情况下,会弹出消息对话框(采用MessageBox.Show()方法)。这一操作流程似乎没有什么问题。但经过细心的测试发现,在该消息对话框弹出后,如果用户不做任何操作,大约10秒钟后整个应用程序会被强行关闭。
  而这一现象居然在联机Debug时无法再现,只有通过应用程序列表直接运行起来才会发生!
  
  经过反复试验和推测,我认为“强行关闭应用”这一步操作应该是由操作系统来处理的。再想想看,也相当合乎逻辑。我们可以尝试在 B 页面的 OnNavigatedTo 事件函数入口处设置一个断点,然后在联机 Debug 环境下触发页面跳转。你会看到,在该事件被触发的那一刻,页面 A 仍显示在手机屏幕中,表明页面导航尚未结束,正处于进行过程中。而在此时弹出 MessageBox 对话框,恰恰阻碍了页面跳转的顺利进行,使其处于“卡死”状态(MessageBox.Show()方法会令程序流停止于该语句调用的地方,并在用户对消息对话框进行响应后继续)。而根据 Windows Phone 7 的相关 Development Guide,页面处于停滞状态达10秒者,杀无论。这就解释了为什么在上述例子中,当用户在10秒内不作出任何响应,应用程序就会被强行关闭了。
  从这个角度出发,我们也不难猜想,如果在 OnNavigatedTo 事件中试图执行一些“重量级”操作,导致进程停滞达10秒以上时,同样也会被系统强行关闭。
  
  用图示来描述本文内容:
DSC0000.jpg
  
  如果一定要在刚刚跳转到 B 页面时就执行必要的处理逻辑,并弹出 MessageBox 的话,可以考虑使用 B 页面的 Loaded 事件。该事件的触发时间稍晚于 OnNavigatedTo 事件,但此时整个页面导航已经执行完毕,A 页面已完全退出手机屏幕。因此,在 Loaded 事件里弹出 MessageBox 是比较安全的。但值得注意的是,Loaded 事件仅在进入该页面时触发一次,而 OnNavigatedTo 事件则在每次显示该页面时都会被触发(例如:在显示 B 页面的状态下按 Start 按钮或 Search 按钮,然后再按下 Back 键回到 B 页面时)。
  
  有兴趣的朋友可以下载示例代码来实测一下:
  下载代码
  
  希望本文能够给开发 Windows Phone 7 多页面应用程序的朋友起到提醒的作用。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65212-1-1.html 上篇帖子: [视频]Silverlight for Windows Phone 7基本开发过程以及Push Button控件的使用 下篇帖子: CTO门的windows 7 要不要买?是不是正版?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表