1

В приложении WP мне нужно сохранить файлы cookie авторизации между навигацией по страницам. Но я боюсь, что Garbage Collector может захватить мой объект static System.net.CookieCollection, в то время как пользователь перемещается между страницами приложений, или если пользователь минимизирует приложение или что-то еще.Жизненный цикл статических объектов в WP

Может ли кто-нибудь описать static objects жизненный цикл в Windows Phone?

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

+1

Пробовал сохранять их в изолированном хранилище? – anderZubi

+0

Да, я думал об этом, но у меня было больше одного cookie, и у каждого cookie есть много полей (имя, значение, домен и т. Д.), Конечно, я могу поместить все поля в одну строку следующим образом: name = sdasd? value = asdasd и т. д., но как я мог хранить неопределенное количество разных файлов cookie в 'IsolatedStorageSettings'? –

+0

Хмм, но я могу хранить их в файле, например xml ... Я должен думать об этом –

ответ

0

Я думаю, вы можете использовать Singleton для хранения ваших файлов cookie. Это совсем другая стратегия от шаблона static, но она может пригодиться вам.

Посмотрите на http://msdn.microsoft.com/en-us/library/ff650316.aspx, если вы хотите углубиться в одноэлементный узор. Вы можете найти полезное сравнение между статическими классами и шаблоном singleton по адресу http://www.dotnetperls.com/singleton-static.

В любом случае, вы должны помнить, что жизненный цикл объекта static и singleton - это точно то же самое, и это то же самое касается домена приложения. Это означает, что их ценность не теряется до тех пор, пока приложение не будет прекращено ни пользователем, ни операционной системой.

Если вы хотите поделиться куки между различными экземплярами приложения, то есть, если приложение закрыто (пользователем или операционной системой, когда в фоновом режиме), вы должны сохранить их значение в изолированных место хранения. Вы можете сделать это в Application_Closing и Application_Deactivated; первый вызывается, когда приложение закрывается, а второе вызывается, когда приложение помещается в фоновом режиме.

+0

Я знаю об одноэлементном шаблоне, но мой вопрос касался жизненного цикла статических объектов в приложениях WP. Итак, как я могу использовать singleton, не опасаясь, что его ценность может быть собрана GC? –

+0

Потому что, если вы не распорядитесь им самим, GC не сделает этого. Если значение singleton может быть выбрано GC в любое время, весь шаблон проектирования потеряет смысл! Одноэлементный шаблон имеет тот же жизненный цикл приложения, и это предоставляется по его собственному дизайну. Но я боюсь, что здесь не хватает места - вы боитесь, что GC уберет ваш статический объект, но вы его никогда не испытывали, верно? – blueocean

+0

Я боюсь, что GC может распоряжаться «статическими объектами», когда пользователь минимизирует приложение или что-то подобное. Это мобильное приложение, его жизненный цикл не такой, как настольные приложения. Когда вы нажимаете кнопку «домой», GC может освободить некоторую память, а может и нет, это зависит от свободного объема памяти, поэтому я боюсь использовать «статические объекты». –

Смежные вопросы