Что является самым близким эквивалентом переменной Session / Cookie в Android? - PullRequest
8 голосов
/ 04 августа 2010

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

1 Ответ

10 голосов
/ 04 августа 2010

Как передать данные между действиями / службами в рамках одного приложения?

Это зависит от типа данных, которыми вы хотите поделиться:

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

Непостоянные объекты Для кратковременного совместного использования сложных непостоянных пользовательских объектов рекомендуется использовать следующие подходы:

Класс android.app.Application

Приложение android.app.Application является базовым классом для тех, кому необходимо поддерживать глобальное состояние приложения. Доступ к нему можно получить через getApplication () из любого действия или службы. Он имеет несколько методов жизненного цикла и будет автоматически создан Android, если вы зарегистрируете его в AndroidManifest.xml.

Открытое статическое поле / метод

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

Хэш-карта слабых ссылок на объекты

Вы также можете использовать HashMap WeakReferences для объектов с длинными ключами. Когда действие хочет передать объект другому действию, оно просто помещает объект на карту и отправляет ключ (который является уникальным длинным, основанным на счетчике или отметке времени) получателю действия с помощью преднамеренных дополнений. Операция получателя получает объект с помощью этого ключа.

Класс Singleton

Есть преимущества использования статического Singleton, например, вы можете ссылаться на них, не приводя getApplication () к классу конкретного приложения, или не пытаясь повесить интерфейс на все ваши подклассы Application, чтобы ваши различные модули вместо этого можно ссылаться на этот интерфейс.

Но жизненный цикл статики не находится под вашим контролем; чтобы придерживаться модели жизненного цикла, класс приложения должен инициировать и разрушать эти статические объекты в методах onCreate () и onTerminate () класса приложения

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

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

Application Preferences
Files
contentProviders
SQLite DB

Если общие данные необходимо сохранить во всех точках, где процесс приложения может быть уничтожен, поместите эти данные в постоянное хранилище, например, «Настройки приложения», БД SQLite, «Файлы» или ContentProviders. Пожалуйста, обратитесь к хранилищу данных для получения дополнительной информации о том, как использовать эти компоненты.

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