正在使用后台代理更新Live互动程序
本文关键字:Live 程序 更新 代理 后台 | 更新日期: 2023-09-27 18:24:08
我正在研究频繁更新实时互动程序的方法,例如每5分钟更新一次。
我以前使用过推送通知,但这次我想避免它们。
ShellTileSchedule每小时只更新一次。
我正在考虑使用一个后台代理,它每五分钟运行一次,并使用从服务器获得的信息更新磁贴。
除了14天的到期日,你能看到这方面有什么陷阱吗?
人们通常如何度过14天的有效期?
查询服务并每5分钟下载几行文本真的会耗尽电池吗?
编辑:像这样的任务的后台代理似乎每30分钟才更新一次,有没有办法解决这个问题,或者更好的解决方案?
谢谢。
当后台任务在手机上运行时,您会受到一些限制。如果操作系统可以同时执行多个任务,它还将移动任务的计划时间,以避免不得不唤醒手机两次。如果你想每5分钟更新一次互动程序,那么推送通知是你唯一的选择。但您可能应该考虑用户是否真的会定期查看信息。
我采取了折中的方法——在操作系统允许的情况下,我使用PeriodicTask
更新我的shell瓦片,但当应用程序启动时,我会用最新信息手动刷新瓦片。这允许用户"强制"平铺数据,并在用户退出应用程序后额外提供更真实的数据。
为了避开14天的到期时间,请在每次启动应用程序时重新注册您的后台任务。这将持续14天。它旨在防止未使用的应用程序使用宝贵的资源——如果用户正在启动应用程序,他们可能仍然希望后台代理运行。如果没有,他们可以通过"设置">"应用程序">"后台任务"禁用它(当然也可以通过卸载)。要注册您的任务,请在初始化代码中执行以下操作;
PeriodicTask task = ScheduledActionService.Find("MyTaskName") as PeriodicTask;
if ((task != null) && (task.IsEnabled == true)) {
ScheduledActionService.Remove("MyTaskName");
}
task = new PeriodicTask("MyTaskName") {
Description = "My Periodic Task",
};
ScheduledActionService.Add(task);
#if DEBUG
if (System.Diagnostics.Debugger.IsAttached == true) {
ScheduledActionService.LaunchForTest("MyTaskName", TimeSpan.FromSeconds(10));
}
#endif
#if DEBUG
允许您在测试场景执行后直接安排任务。
我知道这是一个非常古老的问题,但它仍然可以节省一些人的时间。根据这篇文章,每次调用Update(shellTileData),您的磁贴的过期时间都会延长2周。据我所知,这意味着你的应用程序可以永远更新其互动程序,而无需重新注册任务。