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

StackOverflow https://stackoverflow.com/questions/1441871

Вопрос

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

Это было полезно?

Решение

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

<Ол>
  • Вы можете заключить более сложную структуру в класс, который реализует интерфейс Parcelable , который можно сохранить в дополнительном
  • Можно сложить более сложную структуру в классе, который реализует интерфейс Serializable , который можно сохранить в дополнительном
  • Вы используете статические элементы данных для передачи содержимого, поскольку все они находятся в одном процессе
  • Вы используете внешнее хранилище (файл, база данных, SharedPreferences )
  • Как отметил только что опубликованный пользователь, используйте общий компонент, такой как пользовательское приложение или локальная служба
  • То, что вы не хотите делать, это передавать большие вещи с помощью дополнений. Например, если вы создаете приложение, которое захватывает изображения с камеры, вы не хотите передавать их в дополнениях - используйте элемент статических данных (как бы странно это не звучало). Интенты предназначены для кросс-процесса, что означает, что происходит некоторое копирование данных, которое вы хотите избежать, когда оно не нужно для больших вещей.

    Другие советы

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top