EmailComposeTask / SmsComposeTask теряет состояние моего приложения - PullRequest
0 голосов
/ 18 июня 2011

Я занимаюсь разработкой своего первого приложения для Windows Phone 7. У меня пока нет доступа к реальному устройству, поэтому я полагаюсь на эмулятор, который поставляется вместе с SDK.

В моем приложении я использую EmailComposeTask и SmsComposeTask, где это необходимо. При отладке моего приложения в эмуляторе я нажимаю кнопку, которая запускает одну из этих задач, и она работает. Но когда я затем нажимаю кнопку «Назад», чтобы выйти из задачи и вернуться к своему приложению, состояние приложения теряется - как будто я снова запускаю его заново.

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

Итак, мои вопросы:

  1. Это просто ошибка в эмуляторе?
  2. Если нет, то почему не согласуется и как я должен "сохранять" состояние своего приложения до вызова задачи электронной почты или SMS?

Спасибо.

1 Ответ

5 голосов
/ 18 июня 2011

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

Для временных данных, таких как состояние состояния страницы (например, текстовые поля, флажки и т. Д.), Вы можете использовать PhoneApplicationPage.государство .Я считаю, что предел составляет 2mb.Если вам нужно сохранить больше, вы должны хранить его в изолированном хранилище (маловероятно, если вам не нужно сохранить изображение).Вы можете прочитать о процессе здесь .Чтобы понять процесс Tombstoning, вам следует прочитать эту страницу MSDN .Чтобы сэкономить время, вы можете использовать Tombstone Helper , который обрабатывает все детали хранилища более низкого уровня, но это хорошая идея, чтобы все равно понять процесс Tombstoning, чтобы вы знали, что происходит.

Причина, по которой ваше приложение не всегда становится надгробной, заключается в том, что EmailComposeTask не сразу вызывает надгробие.Из этого сообщения в блоге MSDN :

Ниже приведен список нативных событий, которые при вызове не вызывают автоматическую надгробную плиту в вызывающем приложении:

PhotoChooserTask
CameraCaptureTask
MediaPlayerLauncher
EmailAddressChooserTask
PhoneNumberChooserTask

Существует три сценария, в которых приложение в фоновом режиме будет немедленно захоронено:

User forward navigates away from an application [for example, user

нажимает клавишу запуска] Приложение вызывает средства запуска или средства выбора, не перечисленные выше. Системе требуется больше ресурсов для выполнения переднего плана.деятельность

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

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