Windows phone 7 我们应该在什么时候用关键数据更新应用程序?

Windows phone 7 我们应该在什么时候用关键数据更新应用程序?,windows-phone-7,lifecycle,updating,Windows Phone 7,Lifecycle,Updating,我需要通过互联网使用存储在外部数据库中的内容更新设备上的本地数据库。此应用程序将用于制作订单,因此物品的奖品必须始终真实。目前,当我们看到带有进度条和一些公告的漂亮图片时,我有一个类似smth的启动屏幕。首先,我从外部服务器获取db的版本,如果它等于本地版本,我进入菜单屏幕。如果不相等,我更新本地数据库,然后转到主手册。此屏幕仅在我们使用应用程序时打开 我描述了我是如何看待WP生命周期的 应用程序只在第一次吃午餐,为了下一次吃午餐,我们需要按“后退”按钮关闭应用程序,但并不总是这样。我不确定,但

我需要通过互联网使用存储在外部数据库中的内容更新设备上的本地数据库。此应用程序将用于制作订单,因此物品的奖品必须始终真实。目前,当我们看到带有进度条和一些公告的漂亮图片时,我有一个类似smth的启动屏幕。首先,我从外部服务器获取db的版本,如果它等于本地版本,我进入菜单屏幕。如果不相等,我更新本地数据库,然后转到主手册。此屏幕仅在我们使用应用程序时打开

我描述了我是如何看待WP生命周期的

应用程序只在第一次吃午餐,为了下一次吃午餐,我们需要按“后退”按钮关闭应用程序,但并不总是这样。我不确定,但我认为当我们很快启动并关闭应用程序时,应用程序会被停用而不是关闭

当用户转到其他应用程序时,我们的应用程序将进入休眠状态,当我们返回到我们的应用程序时,它将被激活(非午餐)

下面是显示应用程序生命周期的图片

我从这个网站拍了这张照片:

我的问题是我们什么时候应该更新我们的应用程序

我们无法提供使用旧数据(奖品/产品)下单的机会。 用户可以让我们的应用程序处于休眠状态数周,同时奖品可以上升或下降。另一方面,每当我们的应用程序激活时,我们都会检查更新,这会造成大量流量,这对用户来说会很尴尬。(用户在这里非常重要,因为他会玩它)

您对通过发送推送通知通知应用程序更新的看法。当应用程序收到通知时,它只显示更新屏幕并执行作业;)我认为这是最好的方式,因为应用程序不需要每次都要求服务器更新,我们也不会错过任何新内容


任何建议和观点,你如何解决这个问题对我来说都是无价的

嗯,我认为你不应该绑定到应用程序的激活。。。如果每次用户要下新订单时都要检查更新,或者他要更新当前的购物车,该怎么办?可能不是全部最新的价格,但首先是某种散列,如果是不同的-然后拉整个更新的定价。这似乎是用户应该知道最新价格的最低必要情况

有点

var serverHash = DataSetvice.PullHash(); // Get the latest hash from the server. Very short message containing only hash (or datastamp)
if (deviceHash != serverHash)
     var updatedPrices = DataService.PullPrices();

多好的问题:你应该什么时候更新客户端上的数据,以确保使用该应用程序的人的数据始终是最新的

不幸的是,这个问题没有一个绝对的答案可以涵盖所有人的所有情况

如果价格变动发生在可预测的基础上,例如隔夜或在某个时间,和/或一周中的某几天,那么最容易处理这种情况

如果我们知道价格只在一天(或一周)的特定时间变化,我们可以通过检查价格是否自上次变化以来未进行检查来限制不必要的网络流量(从而限制使用应用程序的延迟)

如果使用Silverlight technologies构建应用程序(如果目标是7.X、8.0和可能是8.1),则应在启动或激活事件时检查应用程序启动。
当然,在应用程序使用期间,价格可能会发生变化。在这种情况下,您可以在应用程序运行时向其发送推送通知,告知其更新数据。您可能还需要处理尝试购买但尚未收到此类通知或尚未采取行动的情况。更多信息请参见下文。
在这样的应用程序未运行时,无法向其发送消息以自动触发获取最新数据

如果你想在后台检查(当应用程序未运行时),那么你需要使用定期后台代理,该代理可以下载最新数据,以备下次使用应用程序时使用

如果为Windows Phone 8.1构建应用程序并使用新的应用程序框架(即非Silverlight),则可以触发后台任务,从通知消息下载最新数据。您可能还希望触发设备启动检查,以防在设备未打开时错过任何通知。
在应用程序启动时,您应该检查激活或恢复事件后的最新数据,以便在导航(启动)应用程序时进行检查

使用上述任何一种技术,您都无法确定应用程序是否已收到通知其更新数据的消息,或运行后台任务以检查最新数据,甚至无法在应用程序未运行时访问服务器以获取最新数据。这就是为什么除了在后台进行任何检查外,还需要检查启动情况

最终,如果价格可以随时更改,并且必须使用/遵守最新价格,则有必要检查客户机上使用的值是否与实际购买时的最新服务器价格和产品一致。(实际上,您可能无论如何都要检查此项,以确保没有订购已停产或缺货的产品。)

这应该是在其他时间同步数据所做的任何其他工作之外的工作。

尝试使用时间为10秒左右的Dispatchermer。我喜欢这个答案,因为它将深入到topic@MyWay更新了我的答案,因为我有了另一个改进的想法。