0

当我们停用WP应用程序时,它可以被逻辑删除并在以后被操作系统终止。当进程终止时,我需要将一些未保存的应用程序数据保存到持久性存储中,但在此之前不会。显然,Deactivated事件不能用于此目的,因为当应用程序移动到后台时立即引发该事件; Close事件也不是我们需要的事件,因为当应用程序进程被操作系统终止时它不会引发。是否有特殊的Windows Phone应用程序事件,如Application_Terminated?WinPhone应用程序事件对应用程序进程终止作出反应

+0

建议您的应用程序以增量方式保存其重要数据。另一个有风险的方法是使用'PhoneApplicationService'的'State':[MSDN](http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817009%28v=vs.105%29.aspx) –

回答

1

问题是,当操作系统处于严重的资源压力下时,它只会将您的应用程序废除。当时,唤醒应用程序并运行应用程序代码是不现实的,因为它可能会危及当前的前景。这种限制存在于所有现代移动操作系统(包括Android,IOS)。这只是在电池/资源友好的环境中操作的成本。

话虽如此,听起来您的支持存储不会消除用户“保存”的数据和刚被缓存直到用户可以完成事务的数据之间的歧义。将这个想法建立起来会很有用。想想现在互联网上一些更智能的网站的工作方式。当您处于输入数据的中间时,您可以导航,当您返回网站时会显示部分填写的表单。该网站明白,你并没有“完成”,但它尊重你提供了一些你需要完成的信息。

我在这里说的是,通过理解和适应您的用户可能使用应用程序的方式,可以轻松解决问题。考虑你的应用程序就像一个网站(至少在这种情况下)可以帮助你理解事物。对于长期的回答,感到抱歉。我希望它可以帮助:)

0

有没有这样的事件。你应该将你的状态保存在Deactivated中,这样如果应用程序从内存中移除(墓碑式),你可以在重新激活时再次设置自己。如果您的问题是确定您是否需要恢复激活状态,请查看ActivatedEventArgs.IsApplicationInstancePreserved标志(http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.activatedeventargs.isapplicationinstancepreserved(v=vs.105).aspx)。这个标志告诉你你的应用是否是墓碑式的。如果不是,则可以丢弃旧状态或在下一次停用时覆盖它。

+0

我现在这样做,并使用IsApplicationInstancePreserved。我不希望将当前未保存的用户输入的数据保存在Deactivated事件中,因为在这种情况下,我们失去了取消激活应用程序时所需的确定/取消功能。 – TecMan