Обновление Live плитки с использованием фонового агента - PullRequest
1 голос
/ 13 февраля 2012

Я часто ищу способы обновления активной плитки - например, каждые 5 минут.

Я уже использовал push-уведомления, но на этот раз хочу их избежать.

ShellTileSheduleобновляется только один раз в час.

Я думаю об использовании фонового агента, который запускается каждые пять минут и обновляет плитку информацией, полученной с сервера.

Помимо 14-дневного срока действияМожете ли вы увидеть какие-либо подводные камни с этим?

Как люди обычно справляются с 14-дневным истечением срока действия?

Будет ли запрос к услуге и загрузка нескольких строк текста каждые 5 минут действительно убьет батарею?

РЕДАКТИРОВАТЬ: Кажется, что фоновые агенты для такой задачи, как это обновление только каждые 30 минут, есть ли способ обойти это или лучшее решение?

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Вы несколько ограничены в том, когда ваши фоновые задачи запускаются на телефоне. Операционная система также будет перемещать запланированное время выполнения задач, если она может выполнять несколько задач одновременно, чтобы избежать необходимости дважды пробуждать телефон. Если вы хотите обновлять плитку каждые 5 минут, то push-уведомления - это единственный вариант. Но вам, вероятно, следует подумать, будет ли пользователь регулярно просматривать информацию, которая регулярно.

Я иду на полпути - я использую PeriodicTask, чтобы обновить плитки оболочки, как позволяет ОС, но затем, когда приложение запускается, я вручную обновляю плитки самой последней информацией. Это позволяет пользователю «форсировать» данные тайла и дополнительно предоставляет более реалистичные данные после выхода пользователя из приложения.

Чтобы завершить 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 позволяет планировать задачу сразу после выполнения для сценариев тестирования.

0 голосов
/ 17 октября 2015

Я знаю, что это очень старый вопрос, но, тем не менее, он может сэкономить кому-то время.Согласно этой статье, каждый раз, когда вы вызываете Update (shellTileData), срок действия вашей плитки продлевается еще на 2 недели.Поэтому, насколько я понимаю, это означает, что ваше приложение может обновлять свою плитку без необходимости повторной регистрации задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...