Когда следует загружать данные из изолированного хранилища для Windows Phone 7? - PullRequest
1 голос
/ 03 декабря 2010

Рекомендации корпорации Майкрософт:

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

Почему и когда следует читать данные из изолированного хранилища?

Что я ищу для загрузкиесли пользователь телефона сохранял свое имя пользователя / пароль в изолированном хранилище и предварительно загружал их для входа в систему на первом экране.Когда должно произойти это действие?

спасибо, Марк

Ответы [ 2 ]

1 голос
/ 04 декабря 2010

Мотивация отложить загрузку данных из изолированного хранилища до загрузки приложения и выполнить это асинхронно двояко.

  1. Проделана большая работа для загрузки приложения на эти устройства с ограниченными ресурсами. Если для вашего приложения это целесообразно, то откладывание любых действий до тех пор, пока приложение не станет отзывчивым, улучшит взаимодействие с пользователем. Также отметим, что у вас есть сертификат 5 с, чтобы что-то показать, и 20 с, чтобы реагировать - и некоторые устройства работают медленнее / быстрее, чем другие.

  2. Асинхронность хороша для любых нетривиальных операций, так что вы не блокируете поток пользовательского интерфейса, не вмешиваетесь и не заставляете устройство выглядеть не полностью отзывчивым.

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

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

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

1 голос
/ 03 декабря 2010

Во-первых, не храните пароль. Когда-либо! В любом месте! Сохраните соленый хеш пароля. Если вам нужно сохранить это для передачи веб-службе (или аналогичной), попросите веб-службу вернуть токен при успешном входе в систему и сохранить его вместо этого.

Теперь ваш актуальный вопрос.
Вы сами ответили на первую часть.

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

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

В вашем конкретном случае я бы не ожидал, что извлечение 2 строк из изолированной строки вообще будет очень медленным, и поэтому я выполнял бы их извлечение в событии Loaded() рассматриваемой страницы.

Если бы вы только извлекали имя пользователя и пароль, я бы подумал об использовании IsolatedStorageSettings для их сохранения.

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

...