我正在从我的应用提交表单,它有一些文字和一些图片。因此,在提交表单时,将进行一系列网络调用以上传图像(我使用的是httpclient库)。
现在,当用户最小化应用并且网络呼叫仍在进行时,如何处理它?</ p>
我尝试使用典型的try catch机制来处理,但是我无法获取Stream对象,因为当应用程序最小化时会丢弃流对象。当我尝试使用文件路径读取图像时,我也会收到未经授权的异常。
尝试使用BackgroundWorker,但仍然没有运气。
我想要实现的最终目标是,我希望在从最小化状态恢复时继续网络调用。
任何帮助或建议都会更有帮助。感谢。
答案 0 :(得分:2)
当用户最小化您的应用时,会引发Deactivated
事件。您将需要处理此事件,正常关闭所有网络调用,并将任何状态数据保存到隔离存储。手机操作系统允许您的应用程序使用10秒,因此必须有足够的时间来完成待处理的网络呼叫,或者丢弃它们。
请注意,在您的应用停用(最小化)后,它可能会在下次启动时保留,也可能不会保留。您必须处理Activated
事件,并检查IsApplicationInstancePreserved
- 如果保留,则您的页面和视图模型应该完好无损,否则您将需要从隔离存储中恢复其状态。 / p>
有关停用/激活生命周期的更多信息,请查看"App activation and deactivation for Windows Phone 8"。
此外,我不确定您是否知道background agents,即使您的应用不是,也可以运行{{3}}。这可能需要考虑,尽管可能比尝试将后台代理与应用程序本身同步更有麻烦。