Класс 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