最近在学windows phone 7的开发,所以抄点东西,怕忘了以后。
1、wp7的架构:wp7的架构基于微软的.NET平台,在应用架构上是Sliverlight和XNA共同承担,使用Sliverlight来开发应用程序,使用XNA来开发游戏
wp7使用.NET的子集,使用sliverlight和XNA的类库
2、windows phone 7的生命周期
windows phone是一个多任务的操作系统,但是不支持多线程,所以我觉得应该是一个假的多任务
它只有唯一一个第三方应用程序可以在前台运行。当用户离开当前程序的页面时,应用应用程序会被操作系统所终止。
屏幕锁 呼入电话 短消息 提醒功能 低电量 程序切换 用户点击开始按钮 都有可能引起应用程序中断
tombstoning 墓碑化冻结 是wp7生命周期的一大特征
中断发生 失去激活状态(Deactivated) 程序终止状态(Terminated) 重新激活状态(Activated) 运行状态(Running)
生命周期处理事件 Application_Launching 程序启动时调用 程序重新激活时不调用 通常从Isolated Storage加载一些永久配置数据(persisted data)
Application_Closing 当程序关闭时调用 当程序失去激活时不调用 通常保存一些永久配置数据(persisted data)到Isolated Storage中
Application_Activated 当程序重新激活的时候调用 当程序启动的时候不调用 通常使用PhoneApplicationService.State保存一些临时数据(transient data)
Application_Decativated 当程序失去激活时调用 当程序关闭的时候不调用 通常从PhoneApplicationService.State读取一些临时数据(transient data) 恢复到用户离开该页面时候的状态,保持用户体验的一致性。
WP7中有这样几个术语,需要注意:
- Tombstoing:程序在导航出时被系统关闭的状态。系统保留程序的的状态,如果返回能够恢复程序状态。
- Page State:程序的视觉状态。在OnNavigatedTo和OnNavigatedFrom中来添加事件。
- Application State:程序中无关于某个特定页面的状态,使用PhoneApplicationService类调用。
- Persitent Data:被程序中的所有实例享用的数据,一般使用isolated storage来保存
- Transient state: 描述程序中实力的数据,一般存储在PhoneApplicationService提供的State字典数据中。
wp7提供了两种方式获取数据:isoloated storage以及state。前者能够长久存储数据,而后者只能够在内存还没有消除你的state的情况下获取数据。
在WP7中,一个应用如果在10秒钟内未加载完成将会被系统强制关闭。
3、启动器和选择器(Launchers&Choosers)
windows phone 应用程序不可以直接访问其他存储信息,如联系人信息等。
windows phone 应用程序不可以直接调用其他功能,例如电话和短消息。
启动器和选择器为应用程序提供间接访问这些内置功能的方法,启动器和选择器运行时操作系统可能终止当前的应用程序。
启动器:启动一个内置的程序提供给用户使用 不返回任何数据给调用的程序
选择器:启动一个内置的程序提供给用户使用 返回一些数据给调用的程序 当用户完成操作是,调用撑血会被重新激活 并接受到返回的数据 但用户可能取消操作这样就返回Null
内置的启动器 EmailComposeTask MarketplaceDetailTask MarketplaceHubTask MarketplaceReviewTask MarketplaceSearchTask MediaPlayerLauncher PhoneCallTask SearchTask SmsComposeTask WebBrowserTask
内置的选择器CameraCaptureTask EmailAddressChooserTask PhoneNumberChooserTask PhotoChooserTask SaveEmailAddressTask SavePhoneNumberTask
可能没有tombstone的tasks PhotoChooserTask CameraCaptureTask MediaplayerLauncher EmailAddressChooserTask PhoneNumberChooserTask PhoneCallTask(都不会调用Deactived事件)
4、推送通知服务
windows phone执行模型决定只有一个第三方的应用程序可以再后台运行 第三方的应用程序不能在后台不断的往Cloud拉数据 微软提供推送通知服务给第三方应用程序取得更新通知的消息 服务器主动能发起的通信 能有效的降低电池的消耗
当前版本的windows phone只支持最多15个第三方应用程序使用推送通知服务
消息类型有
Raw Notification 可以发送任何格式的数据 应用程序可以根据需要加工数据 应用程序相关的通知消息 只有在应用程序运行时才发送
Toast Notification 发送的数据为指定的XML格式 如果应用程序正在运行 内容发送到应用程序中 如果应用程序不运行弹出Toast消息框提示消息
Tile Notification 发送的数据为指定的XML格式 不会往应用程序进行发送 如果用户吧应用程序pin 同 start,
那更新数据发送到start screen的title里面(包含三个属性,背景,标题和计数器 每个属性都有固定的格式与位置 可以使用其中的属性,不宜行三个属性一起使用)
推送服务的详解及代码http://www.lob.cn/jq/wp7/7491.shtml
5、地理位置服务(Location Service)
使用Location Service能帮助开发者为windows Phone 开发具备位置感知(Location-Aware)功能的应用程序
Location Service能从GPS,Wifi和移动网络基站等多种数据源中获取位置信息
根据应用程序的需要,Location Service从一个或者多个数据中计算出位置信息
有效的平衡电池的消耗与位置信息的准确性 为应用程序提供基于事件(event-driven)的统一接口
想办法减低电池的消耗
如果可以的话 使用那个较低准确率的数据源
当需要的时候打开地理位置服务,一旦使用完毕立刻关闭该服务
设置准确率的门限值,减低更新频率
使用状态更新事件(StatusChanged)监控服务状态,提醒用户状态的更新
提醒用户初次启动地理位置服务时需要等待一段时间(15秒到120秒)