Можно ли при открытии фрагмента засунуть в передаваемые данные 15 мегабайт

«Можно ли при открытии фрагмента засунуть в передаваемые данные 15 мегабайт» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно, но это плохая практика. Bundle (через который передаются данные во фрагмент) имеет ограничение на размер в ~1MB для транзакций. При превышении получите TransactionTooLargeException.

Лучшие альтернативы:

  1. Хранить данные в ViewModel
  2. Использовать SharedPreferences или базу данных
  3. Передавать только ID/ключ для последующей загрузки

Пример безопасной передачи:

// В активити
val fragment = MyFragment().apply {
    arguments = Bundle().apply {
        putString("data_key", "large_data_id")
    }
}

// Во фрагменте
val dataId = arguments?.getString("data_key")
// Загружаем данные по ID из хранилища