2013-12-23 3 views
0

Я создаю приложение MVVM для Windows Phone 8.Tombstonning не работает на wp8

Я прочитал этот пост, чтобы попытаться решить проблемы tombstonning: http://www.scottlogic.com/blog/2011/10/03/a-windows-phone-7-1-mango-mvvm-tombstoning-example.html

Этот пример реализует Tombstonning на приложения MVVM. Приложение генерирует фид Twitter в списке.

Я изменил некоторые строки кодов этого примера, поскольку он имеет дело со старым twitter api, но когда я запускаю приложение, закрываю его или активирую Win или Search Buttons, а затем снова запускаю его, состояние страницы не то же самое.

Вот что я изменил в виде модели для имитации нового Twitter Feed:

j = new List<FeedItemViewModel>(); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample1", 
     Id = 1 
    }); 


    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample2", 
     Id = 2 
    }); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample3", 
     Id = 3 
    }); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample4", 
     Id = 4 
    }); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample5", 
     Id = 5 
    }); 
    foreach (FeedItemViewModel t in j) 
    { 

     this._feedItems.Add(t); 

    } 
    public void Update() 
     { 
      this._feedItems.Add(new FeedItemViewModel 
      { 
       Author = "_Auth", 
       Title = "_Sample", 
       Id = 99 
      }); 
     } 

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

Знаете ли вы, почему надгробная плитка работает неправильно?

+0

бежит его на эмуляторе? Вы установили в проекте-> properties-> debug checbox «Надгробный камень при деактивации»? – Romasz

+0

Нет, я запускаю его по телефону – user2505650

ответ

1

Закрытие не имеет ничего общего с надгробным камнем.

Углубление/деактивация происходит, когда вы нажимаете кнопки «Победить» или «Поиск» на телефоне. Приложение становится неактивным, а домашний экран или поисковое приложение (или любое другое, это только пример) становится активным. Ваши приложения переходят в состояние покоя или надгробия, в зависимости от многих факторов.

Когда вы отжимаете назад, активное приложение закрывается, и активное активное приложение снова активируется. Это называется активацией.

Когда происходит активация, ваше приложение может быть восстановлено из состояния покоя (все хранится в памяти, приложение просто приостановлено) или из надгробного состояния (система «перезагружает» приложение и восстанавливает стек навигации и текущую страницу, разработчик несет ответственность за восстановить все остальные переменные состояния, входные данные и т. д.).

Так что разница в том, что приложение с надписью не хранит все состояние внутри и это задача разработчика.

Существует хороший документ на MSDN about Windows Phone App Lifecycle

Вы можете узнать, как она работает, используя эту статью, например - WP7 Application Lifecycle and Tombstoning

+0

Извините, я не сделал себя очень ясно, я также нажал кнопку WinButton и кнопку поиска, но я вернулся к своему приложению, это было похоже на то, что приложение запускалось с самого начала. – user2505650

+0

Следуя вашему примеру, вы применили метод LoadViewModelFromAppState для загрузки данных? Кроме того, вы можете отлаживать деактивацию и гемблинг и посмотреть, действительно ли ScrollOffset хранится и читается из состояния этих событий? –

+0

Да, я реализую этот метод, не могли бы вы попытаться скомпилировать этот код и посмотреть, работает ли он? – user2505650