Это зависит от типа данных, которыми вы хотите поделиться:
Примитивные типы данных
Для совместного использования примитивных данных между операциями / службами в приложении используйте Intent.putExtras.().Для передачи примитивных данных, которые должны быть сохранены, используйте механизм хранения настроек.
Непостоянные объекты
Для совместного использования сложных непостоянных пользовательских объектов в течение короткого времени, следующие подходыРекомендуются:
Класс android.app.Application
Приложение android.app.Application является базовым классом для тех, кому необходимо поддерживать состояние глобального приложения.Доступ к нему можно получить через getApplication () из любого действия или службы.Он имеет несколько методов жизненного цикла и будет автоматически создан Android, если вы зарегистрируете его в AndroidManifest.xml.
Открытое статическое поле / метод
AnАльтернативный способ сделать данные доступными через деятельность / службы - это использование открытых статических полей и / или методов.Вы можете получить доступ к этим статическим полям из любого другого класса в вашем приложении.Для совместного использования объекта действие, которое создает ваш объект, устанавливает статическое поле для указания на этот объект, а любое другое действие, которое хочет использовать этот объект, просто получает доступ к этому статическому полю.
HashMap из WeakReferences дляОбъекты
Вы также можете использовать HashMap WeakReferences для объектов с длинными ключами.Когда действие хочет передать объект другому действию, оно просто помещает объект на карту и отправляет ключ (который является уникальным длинным, основанным на счетчике или отметке времени) получателю действия с помощью преднамеренных дополнений.Операция получателя извлекает объект с помощью этого ключа.
Класс Singleton
Существуют преимущества использования статического Singleton, например, вы можете ссылаться на них, не вызывая getApplication.() к классу, специфичному для приложения, или к тому, чтобы повесить интерфейс на все ваши подклассы Application, чтобы вместо этого различные модули могли ссылаться на этот интерфейс.
Но жизненный цикл статикине очень хорошо под вашим контролем;чтобы придерживаться модели жизненного цикла, класс приложения должен инициировать и разрушать эти статические объекты в методах onCreate () и onTerminate () класса приложения
Постоянные объекты
Даже если кажется, что приложение продолжает работать, система может решить остановить свой процесс и перезапустить его позже.Если у вас есть данные, которые необходимо сохранить от одного вызова действия к другому, вам необходимо представить эти данные как состояние, которое сохраняется действием, когда ему сообщают, что оно может исчезнуть.
Для совместного использования комплексапостоянные определяемые пользователем объекты, рекомендуются следующие подходы:
- Настройки приложения
- Файлы
- contentProviders
- БД SQLite
Если общие данные необходимо сохранить во всех точках, где процесс приложения может быть уничтожен, поместите эти данные в постоянное хранилище, например, «Настройки приложения», БД SQLite, «Файлы» или «ContentProviders».