2011-12-27 4 views
0

У меня есть приложение Windows Phone 7, которое в настоящее время использует расписания Live Tile для обновления.Как остановить расписание Live Tile после обновления

В новой версии приложения используется фоновая задача для обновления плиток.

Однако после обновления приложения на телефоне, если расписание плитки уже запущено на основной плитке, оно не перестает обновляться.

Мне нужно остановить график плитки, если он работает.

Создание нового расписания и остановка он не работает:

var t = new ShellTileSchedule() 
       { 
        MaxUpdateCount = 1, 
        Recurrence = UpdateRecurrence.Onetime, 
        StartTime = DateTime.Now, 
        RemoteImageUri = new Uri("http://mysite.com/livetile.png"), 
       }; 
t.Start(); 
t.Stop(); 

Создание нового расписания на основных плитках в активной Плитке не работает:

ShellTile mainTile = ShellTile.ActiveTiles.FirstOrDefault(); 
t = new ShellTileSchedule(mainTile) 
        { 
         MaxUpdateCount = 1, 
         Recurrence = UpdateRecurrence.Onetime, 
         StartTime = DateTime.Now, 
         RemoteImageUri = new Uri("http://mysite.com/livetile.png") 
        }; 
t.Start(); 
t.Stop(); 

ответ

2

Так как вы можете только есть один ShellTileSchedule за приложение, создавая новый, начиная его, а затем останавливая его, должен удалить старый и, конечно же, остановить тот, который вы только что создали.

(Почему вы не попробовать, прежде чем спрашивать?)

+0

две причины не попробовать. Думал, что должна быть страница SO с правильным ответом, поскольку я не мог легко найти ее в MSDN, а также потому, что я не хотел использовать хак, я хотел бы, чтобы я правильно использовал – Doug

+0

. MSDN разъясняет, что может быть только * one * 'ShellTileSchedule' на страницу, так :-) –

+0

Это решение создания нового и остановки его, похоже, не работает ...? – Doug

1

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

Вот еще несколько предложений, я не тестировал ни одного из них: - Вы пытались удалить из своего приложения? Это необходимо для ShellTileSchedule, поэтому его удаление может помешать работе? Это, вероятно, произойдет автоматически при отправке этого приложения через рынок, но для тестирования вы можете дать ему шанс. - ShellTileScheduel может быть отменен, если он не работает. Если возможно, можете ли вы попытаться удалить файл PNG, который находится в RemoteImageUri. Или заполнить его сломанными данными, чтобы повредить ShellTileSchedule. Я знаю, что это некрасиво, но это может сработать. - Вы пытались заменить ShellTileSchedule тем, что не бесконечно повторяется? Просто запустите его (в последний раз), а затем закончите.

Удачи вам и сообщите нам, если и как вы исправили.

+0

Спасибо Том. некоторые замечательные идеи, хотя, к сожалению, я не могу «испортить» живую плитку, так как она сломает всех людей, которые не обновились до новой версии после ее появления на рынке (я исправляю это в будущем, имея верные обработчики живой черепицы). Я также попытался запустить единое расписание (в коде в вопросе) без везения. следовательно, мое растущее разочарование. Вы, вероятно, на что-то с манифестным «обновлением», которое визуальная студия делает во время развертывания, если вы не запускаете «Чистота, перестроить» - вот как я тестирую свои обновления; путем установки каждого в порядке после выполнения «Чистой перестройки». – Doug

+1

Хмм, есть два варианта, о которых я могу думать: - Отслеживайте, когда пользователь запускает обновленную версию в первый раз, а затем разбивает исходную живую фрагмент. - Когда обновление публикуется, замените все «старые» плитки на «обновите» «сообщение и сломать его через день или около того.Сообщение останется видимым до тех пор, пока пользователь не обновится, и фоновый агент не начнет работать. Оба не идеальны, но, к сожалению, лучшее, что я могу придумать прямо сейчас. Держать нас в курсе! –