Windows 8 创建一个Metro应用程序,该应用程序会定期更新自身,而不会置于锁定屏幕中

Windows 8 创建一个Metro应用程序,该应用程序会定期更新自身,而不会置于锁定屏幕中,windows-8,microsoft-metro,Windows 8,Microsoft Metro,如上所述: 似乎只有当用户将您的应用程序置于锁定屏幕上时,后台任务才会使用时间触发器运行 那么,在没有后台任务的情况下,如何创建类似于日历的应用程序呢?我指的是一个应用程序: 定期更新其磁贴(例如,每天一次) 即使不运行也会更新其磁贴 您应该创建一个维护触发器。这些触发器仅每两小时触发一次,并且仅在机器使用交流电源时才会触发。当触发器运行时,您可以查找即将到来的约会并创建预定的toast通知 var scheduledToast = new Windows.UI.Notifications.Sc

如上所述:

似乎只有当用户将您的应用程序置于锁定屏幕上时,
后台任务才会使用时间触发器运行

那么,在没有后台任务的情况下,如何创建类似于
日历的应用程序呢?我指的是一个应用程序:

  • 定期更新其磁贴(例如,每天一次)
  • 即使不运行也会更新其磁贴

  • 您应该创建一个维护触发器。这些触发器仅每两小时触发一次,并且仅在机器使用交流电源时才会触发。当触发器运行时,您可以查找即将到来的约会并创建预定的toast通知

    var scheduledToast = new Windows.UI.Notifications.ScheduledToastNotification(toastXml, startTime);
    
    您还可以使用ScheduledTileNotification()调用更新磁贴。不幸的是,我认为没有办法删除通知,因此如果用户在预定通知之前删除约会,我认为您无法删除它。我正在深入研究这个问题,如果找到答案,我会在这里发表评论

    但是,我认为对于日历应用程序,您可能希望它使用时间触发器,并将其置于锁定屏幕上,因为我希望随时接收约会提醒,无论是否插入


    您不想使用TimeTrigger有什么原因吗?

    您可以计划定期更新应用程序的磁贴,而不必显示在开始屏幕上。有关详细信息,请参阅本文。然后,一旦应用程序启动,您就可以更新日历了。

    谢谢您的回答。日历只是一个例子,它似乎不是一个很好的例子。实际上,我不想使用TimeTrigger的主要原因是我不想向用户请求后台权限。您可以通过GetScheduledFileNotifications/RemoveFromSchedule删除计划通知。MBZ-表面上,定期通知符合要求,但需要另一项服务来更新“休眠”应用程序每天轮询的tile XML。对你来说仍然不是一个完美的场景,因为另一个服务相当于一个后台trigger@JimO“尼尔。我以为有什么东西可以完成它,只是似乎无法快速浏览找到它。谢谢