Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
499 of 502 menu
◀ ▶

Класс TransactionTooLargeException

Класс TransactionTooLargeException появляется при передаче слишком большого Bundle через Binder, обычно лимит около сотни килобайт. Часто виноваты гигантские массивы в Intent или сохранение состояния activity. Большие файлы передают через URI, FileProvider или локальное хранилище.

Пример

Давайте положим в intent только короткую строку:

import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("abcde", "12345") } setContent { Text(text = intent.getStringExtra("abcde") ?: "abcde") } } }

Маленький extra проходит через Binder. Если положить массив на мегабайты, система бросит TransactionTooLargeException при startActivity или onSaveInstanceState.

Смотрите также

  • класс BadParcelableException,
    другая ошибка упаковки данных
  • класс Intent,
    в extras которого не кладут большие blob
  • метод startActivity,
    где передают intent через Binder
  • класс FileProvider,
    для передачи файла по URI
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить