备忘!WP8开发必须注意的那些事……[未完待续]

App应用程序状态管理的主事件有四个:LaunchingDeactivatedActivatedClosing

这些事件里任务时间必须在10秒内完成,否则程序被终止!所以,这些事件里面最好别做网络和独立存储操作


App被切换到后台时处于休眠状态,无法干任何事,而且可能会被系统执行逻辑删除而终止。程序被逻辑删除后,程序状态数据和页面状态数据会暂时被保留,但由于系统最多只保留5个最近应用程序的这些状态数据,所以这些状态数据并不可靠。可根据Activated事件的参数ActivatedEventArgs.IsApplicationInstancePreserved判断程序是从休眠中修复(true)还是逻辑删除后恢复(false)。


保存应用程序级状态数据(如被多个页面共享的数据 ),使用PhoneApplicationService.Current.State;保存页面的状态数据,使用PhoneApplicationPage.State。也不能因为它们不可靠而抛弃它们改为全部使用独立存储,它们的读写速度要比独立存储快的多,可在上面4个主事件里直接操作。


独立存储操作可用IsolatedStorageSettings.ApplicationSettings或者IsolatedStorageFile.GetUserStoreForApplication(),它们都没有大小限制。但是保存在IsolatedStorageSettings.ApplicationSettings的数据会一直占用着程序内存,程序正常退出时会对其自动执行Save操作。


一个应用程序的运行内存限制为150M,可以通过VS的 “调试 -> 启动WindowsPhone应用程序分析” 分析程序的性能。


一个UIElement的最大高度是2048


模拟器的数据保存在虚拟硬盘文件.vhd和.avhd里,路径在:C:\Users\用户名\AppData\Local\Microsoft\XDE下,可通过 计算机管理 -> 磁盘管理 -> 附加VHD 把它们映射到磁盘驱动器来进行方便的读写操作。


页面跳转时附加到Uri的参数长度有限制,测试65000字节以内是没问题的,特殊小数据可以通过Convert.ToBase64String()编码后传递。


图像、json等网络文件数据在本次程序生命周期中系统会做缓存,再次请求相同网络文件url时系统会返回缓存中数据,所以如果需要刷新获取最新数据,只能在url后面加随机参数了


程序页面跳转时,几个关键函数的执行顺序如下,假设从PageA跳转到PageB:

先执行PageB的构造函数,再执行PageA的OnNavigatedFrom函数,然后执行PageB的OnNavigatedTo函数,最后触发PageB的Loaded事件。


后台定时任务每30分钟执行一次,每次执行时间必须在25秒内,最大内存限制在6M内,生效时间最长只有14天,过期后需要重新计划,连续2次崩溃后会被禁用,整个手机的后台任务最多为6个,节电模式下不会执行。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值