Windows phone 8 Windows Phone 8自定义每小时范围实时磁贴更新频率

Windows phone 8 Windows Phone 8自定义每小时范围实时磁贴更新频率,windows-phone-8,windows-phone,background-process,live-tile,background-transfer,Windows Phone 8,Windows Phone,Background Process,Live Tile,Background Transfer,当我搜索这个问题的答案时,我只遇到开发人员在寻找越来越频繁地更新应用程序的live Tile的方法。我想要相反的,有点 看,我正在开发一个天气应用程序,我希望它每小时更新一次,但只针对特定的每小时范围。也就是说,我不希望用户能够每小时更新一次互动程序,因为1)人们睡觉,2)我使用的API每天只对前1000次调用免费。换句话说,用户不需要每小时更新一次,我也负担不起让他们选择 例如,是否有可能让live tile从上午8点到晚上11点每小时更新一次,并且从中午12点到早上7点不进行任何调用?如果您

当我搜索这个问题的答案时,我只遇到开发人员在寻找越来越频繁地更新应用程序的live Tile的方法。我想要相反的,有点

看,我正在开发一个天气应用程序,我希望它每小时更新一次,但只针对特定的每小时范围。也就是说,我不希望用户能够每小时更新一次互动程序,因为1)人们睡觉,2)我使用的API每天只对前1000次调用免费。换句话说,用户不需要每小时更新一次,我也负担不起让他们选择


例如,是否有可能让live tile从上午8点到晚上11点每小时更新一次,并且从中午12点到早上7点不进行任何调用?

如果您在
日程安排
中调用API,只需将调用封装在检查时间的If块中即可。我有一个类似的需求,每天更新一次磁贴(这是倒计时,直到圣诞节)

此代码位于我的
ScheduledAgent.cs
文件中。它检查日期(应该只在12月26日之前触发)并设置倒计时,然后只在圣诞节早上发送祝酒通知。这应该是一个很好的例子,说明如何在后台任务中将API调用限制为dat的设置时间

if (DateTime.Now.Month == 12 && DateTime.Now.Day < 26)
{
    //number of days until the 25th
    var countdown = ((new DateTime(DateTime.Now.Year, 12, 25).DayOfYear) - DateTime.Now.DayOfYear);

    if (secondaryTile != null)
    {
        var imageString = "/Images/Tiles/" + countdown + ".png";
        var newTileData = new StandardTileData
        {
            BackgroundImage = new Uri(imageString, UriKind.Relative)
        };
        secondaryTile.Update(newTileData);
    }

    var now = DateTime.Now;
    if (now.Day == 25 && now.TimeOfDay.Hours == 9 && (now.TimeOfDay.Minutes > 14 && now.TimeOfDay.Minutes < 46))
    {
        var toast = new ShellToast { Title = "Xmas Countdown", Content = "Merry Xmas! Thank you for using 'Quick Xmas List' and have a safe holiday!" };
        toast.Show();
    }
}
if(DateTime.Now.Month==12&&DateTime.Now.Day<26)
{
//到25日的天数
var倒计时=((新的DateTime(DateTime.Now.Year,12,25).DayOfYear)-DateTime.Now.DayOfYear);
if(secondaryTile!=null)
{
var imageString=“/Images/Tiles/”+倒计时+“.png”;
var newTileData=新的标准化数据
{
BackgroundImage=新Uri(imageString,UriKind.Relative)
};
更新(新文件数据);
}
var now=DateTime.now;
如果(now.Day==25&&now.TimeOfDay.Hours==9&&now.TimeOfDay.Minutes>14&&now.TimeOfDay.Minutes<46))
{
var toast=new ShellToast{Title=“圣诞倒计时”,Content=“圣诞快乐!感谢您使用“快速圣诞列表”,祝您有一个安全的假期!”;
toast.Show();
}
}

在您的方法中,检查时间范围,如果不在时间范围内,请不要进行计算等等。我认为这是间接回答的,请看一看: