Может ли фоновая задача WinRT быть долгоживущей, если она находится в рамках ограничений ЦП и сети?

В документации Microsoft говорится:

Фоновые задачи предназначены для краткосрочных задач, которые не потребляют много ресурсов.

Там также говорится:

Каждое приложение на экране блокировки получает 2 секунды процессорного времени каждые 15 минут, которые могут использоваться всеми фоновыми задачами приложения. По истечении 15 минут каждое приложение на экране блокировки получает еще 2 секунды процессорного времени для использования его фоновыми задачами.

  • Мне нужно запускать фоновую задачу каждые две минуты, чтобы обновлять живую плитку.
  • Мое приложение — это приложение для блокировки экрана.
  • Вычисления находятся в пределах ограничений ЦП и использования сети.

Могу ли я создать постоянную фоновую задачу (например, что-то, что опрашивает веб-службу и извлекает информацию, ожидает и зацикливается) для создания OneShot TimeTrigger каждые две минуты или есть лучший способ сделать это?

Меня беспокоит параметр фоновой задачи: будет ли среда выполнения считать задачу неактивной, пока она находится в спящем режиме, и закрыть ее, или что-то еще, например, существует ограничение на количество обновлений живой плитки в течение 15 минут...


person iandayman    schedule 12.11.2012    source источник
comment
Я сильно сократил ваш вопрос. Я попытался сохранить спор, облегчив потенциальным ответчикам быстрое понимание того, чего вы пытаетесь достичь. Не стесняйтесь откатывать или улучшать, если я не понял это правильно.   -  person N_A    schedule 04.06.2014


Ответы (1)


Да, если под долгоживущими вы подразумеваете до 25 минут.

Триггеры времени не могут выполняться чаще, чем 15 минут. Создание триггера OneShot, который выполняется за 2 минуты, — интересная идея, и она должна работать. Да, фоновые задачи могут регистрировать другие фоновые задачи, чтобы поддерживать эту цепочку. Если машина пользователя выключена, когда она выполняется, она будет поставлена ​​в очередь позже.

Сказав это, частое обновление вашей плитки и использование фоновой задачи не является мудрым решением. Потому что это ненадежно. Например, фоновые задачи можно отключить. Но каждые 15 минут вы будете превышать свою квоту. Вместо этого попробуйте использовать плитку «Запланировано».

person Jerry Nixon    schedule 04.06.2014
comment
Не могли бы вы немного уточнить свой ответ? Не сразу понятно, на какой вопрос вы отвечаете. - person N_A; 04.06.2014
comment
Вопрос в заголовке гласит: может ли фоновая задача winrt быть долгоживущей, если она находится в рамках ограничений ЦП и сети? Ответ положительный. Это старый вопрос, я просто не хотел оставлять его мертвым и без ответа. - person Jerry Nixon; 04.06.2014
comment
Термин «короткоживущий» означает быстрое выполнение при каждом запуске. Это не относится к тому, как долго выполняется фоновая задача. После регистрации он остается в силе до отмены регистрации; он может не запуститься для любой данной итерации, если он ограничен из-за ограничений ресурсов, но все равно должен действовать после сброса квот. - person Kraig Brockschmidt - MSFT; 04.06.2014
comment
Крейг, какое официальное ограничение по времени для фоновых задач в Windows и в телефоне? - person Jerry Nixon; 04.06.2014
comment
@JerryNixon-MSFT После того, как я открыл страницу для вопроса, я почти никогда не перечитывал заголовок, поэтому, переходя к ответу и видя что-то, что непосредственно отвечает заголовку, но не телу, меня несколько сбивает с толку. Явное почти всегда лучше, чем неявное. - person N_A; 04.06.2014
comment
@mydogisbox звучит так, будто у нас разные привычки. Извините, вы были сбиты с толку. - person Jerry Nixon; 04.06.2014
comment
@JerryNixon-MSFT Точно! Вот почему хорошо четко указать, на что вы отвечаете. (+1 кстати) - person N_A; 04.06.2014