Junior
46
questionbank

Как передать данные из одной Activity в другую?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Способы передачи данных:

  1. Intent Extras: Самый распространенный способ. Данные в виде пар ключ-значение добавляются в Intent.
java
java

Поддерживаемые типы: примитивы, String, Bundle, Parcelable, Serializable. Для сложных объектов предпочтительны Parcelable.

  1. ViewModel (совместно с LiveData или Channel): Подходит для более сложных сценариев, где данные должны сохраняться при поворотах экрана или использоваться несколькими компонентами. DataFlow можно реализовать через MutableLiveData или Channel.
kotlin
kotlin
kotlin
  1. Callback / Interface (при запуске Activity для результата): Используется, когда принимающая Activity должна вернуть результат отправляющей Activity.
java
java
  1. Локальная база данных / Shared Preferences / Internal Storage: Для передачи больших объемов данных или данных, которые должны сохраняться. Данные записываются в хранилище в одной Activity и считываются در другой.
java
java

Этот подход требует дополнительной логики для управления жизненным циклом данных (когда их очищать).

  1. Синглтон / Глобальный статичный объект: Не рекомендуется из-за потенциальных проблем с утечками памяти и нарушением архитектуры. Использовать только в крайних и очень простых случаях.

    java
    java
    java

Выбор метода зависит от объема данных, их сложности, необходимости сохранения и требуемого взаимодействия между Activity. Наиболее распространенные и рекомендуемые подходы - Intent Extras и ViewModel.