Как приложение «Календарь» на Windows Phone обновляет свою живую плитку даже при включенном режиме энергосбережения?

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

Я заметил, что Календарь (собственное приложение) не страдает от этой проблемы даже в режиме энергосбережения.

Получает ли он особое внимание/возможности, будучи приложением от первого лица, или есть какой-то трюк, о котором я не знаю (пока)?


person Andrei Rînea    schedule 06.08.2013    source источник
comment
Я бы предположил, что это ограничение для сторонних приложений. Я знаю, что если я включу мой режим энергосбережения, я не хочу, чтобы мои приложения обновлялись (так часто).   -  person lhan    schedule 06.08.2013


Ответы (1)


Встроенные (или системные) приложения не ограничены так же, как сторонние приложения. Есть много примеров этого на Windows Phone, но два видимых...

  • Приложение календаря обновляет свою живую плитку, даже когда включен режим энергосбережения (что вы отметили).

  • Живая плитка People Hub, которая состоит из множества маленьких плиток, которые последовательно вращаются — как разработчики, у нас нет доступа к этому шаблону живых плиток.

  • Живая плитка Photos Hub отображает фотографии с помощью анимации панорамирования, которая также недоступна для разработчиков.

Поскольку не существует «исправления», если ваш PeriodicTask не работает должным образом, вам просто нужно будет обновлять плитку при запуске вашего приложения, а также каждый раз проверять состояние PeriodicTask.

person Neil Turner    schedule 06.08.2013
comment
Спасибо! Я подозревал об этом, но решил, что лучше спросить. Мой обходной путь заключался в том, чтобы незаметно написать день рендеринга плитки на плитке (например, пятница, 2, если плитка была сгенерирована 2 августа). Однако это привело меня к WriteableBitmapEx, который должен запускаться в потоке пользовательского интерфейса и должен был вызывать Dispatcher.BeginInvoke из фонового агента. Этот последний бит отстой, потому что я украл сок пользовательского интерфейса у пользователя... Может быть, это станет предметом будущего вопроса.. - person Andrei Rînea; 07.08.2013
comment
iOS похожа, системные приложения могут делать особые вещи, которые сторонние приложения не могут - приложение календаря и часов (в iOS 7) может обновлять свои значки, но никакое другое приложение не может. Что касается вашего второго вопроса, я просто скажу, что диспетчеризация потока пользовательского интерфейса в фоновом агенте не имеет большого значения, я бы не беспокоился. Удержание лимита памяти всегда является проблемой, особенно на WP7. - person Neil Turner; 07.08.2013