Подтвердить что ты не робот

Передача данных не-примитивного типа между действиями в android

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

4b9b3361

Ответ 1

У вас есть несколько вариантов:

  • Вы можете обернуть более сложную структуру в классе, который реализует интерфейс Parcelable, который может быть сохранен в дополнительном
  • Вы можете обернуть более сложную структуру в классе, который реализует интерфейс Serializable, который может быть сохранен в дополнительном
  • Вы используете статические элементы данных для передачи информации, так как все они находятся в одном процессе.
  • Вы используете внешнее хранилище (файл, база данных, SharedPreferences)
  • Как отметил только что опубликованный человек, используйте общий компонент, например пользовательский Application или локальный Service

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

Ответ 2

Один из вариантов, о котором я знаю, - это хранение данных, которые вы используете в объекте Application, которые все ваши действия могут извлекать из контекста.

Я также слышал об использовании Google Protocol Buffer для достижения более эффективного решения