Передача данных непримитивного типа между действиями в Android
-
10-07-2019 - |
Вопрос
Предположим, вы хотите начать новое действие и передать ему некоторые данные из текущего действия. Если данные относятся к примитивному типу, вы можете просто использовать намерение и добавить дополнительные элементы, но как бы вы это сделали для более сложных структур данных, таких как массивы или объекты?
Решение
У вас есть несколько вариантов:
<Ол> Parcelable
, который можно сохранить в дополнительном Serializable
, который можно сохранить в дополнительном SharedPreferences
) приложение
или локальная служба
То, что вы не хотите делать, это передавать большие вещи с помощью дополнений. Например, если вы создаете приложение, которое захватывает изображения с камеры, вы не хотите передавать их в дополнениях - используйте элемент статических данных (как бы странно это не звучало). Интенты предназначены для кросс-процесса, что означает, что происходит некоторое копирование данных, которое вы хотите избежать, когда оно не нужно для больших вещей.
Другие советы
Один из известных мне вариантов - это сохранение данных, которые вы используете, в объекте Application, который все ваши действия могут извлечь из контекста. Р>
Я также слышал об использовании буфера протокола Google для достижения более эффективное решение