本篇文章主要介绍了"UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理",主要涉及到suspension,manager方面的内容,对于Windows Phone开发感兴趣的同学可以参考一下:
最近比较忙有一段时间没有更新了,再接再厉继续分享。 先我们看看App在生命周期中会出现那些状态:详细介绍参考官网:App lifecycle https://...
最近比较忙有一段时间没有更新了,再接再厉继续分享。
先我们看看App在生命周期中会出现那些状态:
详细介绍参考官网:App lifecycle https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/app-lifecycle

一般情况:
比如用新闻APP看新闻的时候突然收到邮件,然后跳转到邮件APP查看邮件,查看完了再回到APP继续看新闻。
这个时候如果不做中断挂起处理的话,是很难保证APP会恢复到跳转之前的状态。之所以说很难保证是因为如果手机内存够大够用系统就不会关闭没用的app让它驻留在内存中,下次直接从内存恢复,这样可以恢复到跳转之前的状态。如果内存不够用系统会关闭app回收资源,这个时候没有中断保存进度处理再次启动的时候就会从新开始,无法恢复到跳转前的状态。
正是为了这样的人性化处理才有中断恢复处理的必要性。
中断复原的原理:
数据保存时机:从Running--->Suspended的时候触发Suspending事件做画面进度保存处理,
数据恢复时机:如果内存没回收直接触发Resuming事件不需要做任何事情,如果回收的情况下在调用app的OnLaunched中通过判断Terminated状态做数据恢复处理。
中断复原实现:(MVVM实现方式以后待续)
在Win8.1开发StoreApp的时候默认会在项目中添加SuspensionManager.cs文件并且配置好,然而在UWP开发中模板没有自带这个文件,为什么?难道还有其他处理方法?
在网上找了下没找到原因,如果有知道欢迎介绍。虽然没找到结果无意发现了一个很好的开源框架:Template10,UWP很多常用的开发技巧都封装好了,减少不少工作量。Template10详细介绍参考:https://github.com/Windows-XAML/Template10/wiki。
那我们的中断处理就有两种方法:
- SuspensionManager.cs形式
- Template10 插件
第一种SuspensionManager.cs形式实现:
找到SuspensionManager.cs文件,在微软的UWP例子里头有:https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/ApplicationData/cs/SuspensionManager.cs。把这个文件趴下来或者新建一个win8.1的app从它里面拷贝过来,别忘记改命名空间。
