4

我希望每次用户打开“开始”屏幕时都更新我的应用程序的动态磁贴,因为它的动态磁贴功能是“仅”可视的(例如,不需要在锁屏上或在后台执行特定逻辑)

在 Windows 商店中,您可以找到“手表”应用程序,该应用程序将通过他们的应用程序实时磁贴在开始屏幕上向您显示时间,通常每分钟的粒度不超过。这对我来说是完美的。

在动态磁贴中观看。

这些应用程序似乎比那些著名的 15 分钟具有更精确的时间间隔,并且它们确实作为后台任务运行(这些应用程序要求获得许可)。

那么实际上每 15 分钟会发生什么?为什么这些图块不受这 15 分钟间隔的限制?我听说他们可能会使用通知队列,但他们仍然需要每 1 分钟更新一次……

非常感谢您的帮助!

4

3 回答 3

2

您可以使用TileUpdater.addToSchedule安排最多 4096 个通知。所以,我想一种方法是:

  1. 设置一个维护任务以在某个时间间隔运行(不需要为此在锁定屏幕上)。
  2. 任务运行时:

    2a。清除您的通知队列。

    2b。安排一堆通知,一个现在 + 1 分钟,一个现在 + 2 分钟,等等(注册少于 4096,并且不要注册超过你真正需要的)。

您的维护任务可以安排为每天运行,但您可以安排 2 天的通知,以防它没有及时运行。

这样做的主要缺点是,如果用户使用电池电源超过 2 天(或者无论您安排它们有多远),您的通知将停止,直到它们插入并且您的维护任务被允许运行。

如果您不需要每分钟更新一次,您可以将它们安排到更远的将来(即一周或更长时间,如果您每 5 分钟更新一次)。

于 2013-04-26T20:33:13.830 回答
1

请注意此处找到的通知类型。

您提到的 15 分钟限制在此处找到的定期通知中进行了讨论。

本地通知、预定通知和推送通知可能都可以满足您的要求,尽管我不太确定预定通知,因为我认为您一次可以排队的通知数量是有限的。

(我认为 - 尚未对此进行测试)本地通知可用于从后台任务发送磁贴更新,但这具有您的应用程序需要运行才能进行此工作的限制。

推送通知来自云服务,并且可能在您的应用程序未运行时发生。不幸的是,这需要云服务。

于 2013-04-26T17:10:38.720 回答
1

我在 Microsoft Michael Palermo 的团队成员(此处为博客有一个类似的应用程序,名为Tile of Time

这似乎是一个非常简单的应用程序,但据我所知,这里的诀窍是在接下来的 15 分钟内为每次更新安排一个后台任务,并确保没有重复。看起来很多,但这是为了解决为后台任务提供的时间限制。

于 2013-04-26T18:27:58.230 回答