【windows8开发】Metro App生命周期之概述
来源:互联网 发布:人工智能免费观看神马 编辑:程序博客网 时间:2024/05/18 02:19
先看一张图:
其实在《【windows8开发】javascript开发Metro风格App》 一文中曾经介绍过Metro App的生命周期,只是当时说明的内容比较简单。
从图中可以看出,Metro程序主要存在三个状态:Not Running,Running,Suspended。
用户启动后,程序并不是直接进入Running状态,而是先进入NotRunning状态,在此状态下如果程序发生crash或被suspended,则程序会被终止,不会保留在内存中。如果初始化正常,则程序会进入Running状态。
由于Metro App都运行于全屏模式,当用户从当前程序切换到其他程序时,当前程序会被suspended,停止运行,仅保留于内存中。也就是说Metro模式下前台仅会有一个应用处于Running状态。这其实是考虑到节约系统资源,提高性能和用户体验以及节省设备能源(电量)。另外,当系统进入低电量状态时,程序也有可能被挂起(suspended)。
当用户又切换回程序或者从低电量状态恢复回来时,相关程序会被Resume,重新进入Running状态。但是当程序被挂起时,系统也有可能因为需要释放内存或者节约电量而强行终止某些被挂起的程序。而且并不会在终止程序时通过事件通知程序。所以,一个稳定而又健全的程序应该在被suspended时持久化保存当前状态和必要的数据,以便在被迫终止后重启时还可以恢复之前的状态。
Metro程序一般不需要由用户来关闭,可以完全交给系统来管理。当然用户也可以通过特定的手势(貌似我用鼠标试了下,关不掉,郁闷)或者按Alt+F4来关闭程序。需要注意的是,不应该由应用程序中的某些代码来终止程序,这样系统会当做是一次程序的Crash。同理,你也不可以在应用的UI中提供给用户关闭程序的按钮,此类程序应该不能通过App Store的审查。
开发者不再需要为Metro App开发安装或者卸载程序,仅需要把当前应用打包后上传至App Store。而用户可以直接从App Store下载到应用程序包,系统会根据根据相关信息安装应用程序。Metro模式下程序的安装或卸载都是对每位登录用户而言的,也就是说当你安装时仅仅是为自己这个登录的ID安装,其他用户并不能共享用这个应用,卸载时也是一样,只有所有安装了同一应用的用户都卸载了该应用,该应用才会从这台设备上真正完全删除。
- 【windows8开发】Metro App生命周期之概述
- 【windows8开发】Metro App生命周期之启动
- 【windows8开发】Metro App生命周期之Suspended与Resume
- Metro App生命周期之概述
- 【Windows8开发】Metro App生命周期之打包、部署安装与卸载
- Windows8 Metro开发 (01) : Metro应用程序生命周期
- 【windows8开发】C++开发Metro风格App
- 【windows8开发】javascript开发Metro风格App
- Windows8 Metro style app开发前瞻
- windows8开发-metro应用之Popup窗口
- Windows8 Metro开发 -- 总览
- windows8 Metro APP JavaScript开发从零开始 - 基础篇(一)
- windows8 Metro APP JavaScript开发从零开始 - 基础篇(二)
- Windows8 Metro开发 (02) : AppBar控件之TopAppBar
- Windows8 Metro开发 (03) : AppBar控件之BottomAppBar
- Windows8 Metro开发 (03) : AppBar控件之BottomAppBar
- Windows8 Metro开发 (02) : AppBar控件之TopAppBar
- [zz]Metro App生命周期之打包…
- curriculum vitae
- setitimer和sleep是冲突的
- 动态规划算法(微软一面笔试题:股票交易,O(N)时间复杂度O(1)空间复杂度)
- NSSet是什么对象, 怎么用
- 导入, 导出 EXCel
- 【windows8开发】Metro App生命周期之概述
- AndEngine播放音乐和音效
- IOS - 新浪微博SDK
- 浏览器兼容性问题
- Win7下禁止QQ扫描本地硬盘
- ico网站标志显示不了(转自www.jqueryba.com)
- [開發記錄] 函式庫調用 - 使用ALSA進行音訊資料擷取 之其二
- Flex中的组件mx.controls.NumericStepper
- int,float怎么保存在NSMutableArray,这样的COCOA对象里面