Ответ 1
Я думаю, что предел равен 500kb. Вы можете сохранить переданный объект в файл и отправить путь к файлу в комплекте. Вы можете проверить аналогичный вопрос, заданный мной в fooobar.com/questions/454930/...
Я хочу знать, имеет ли размер данных пакета андроида верхний предел. Я пытаюсь отправить данные с помощью пакета, размер которого составляет > 80 тыс., И выбросить андроидальное фатальное исключение. Данные являются Serializable.
Я думаю, что предел равен 500kb. Вы можете сохранить переданный объект в файл и отправить путь к файлу в комплекте. Вы можете проверить аналогичный вопрос, заданный мной в fooobar.com/questions/454930/...
Это зависит от цели комплекта. Сам пакет ограничен только объемом памяти.
Два основных использования для пакетов - это передача информации между компонентами с использованием намерений и сохранение состояния действий.
Когда используется для передачи информации между компонентами Android, пакет последовательно преобразуется в транзакцию связующего. Общий размер всех транзакций связующего в процессе составляет 1 МБ. Если вы превысите этот предел, вы получите эту фатальную ошибку "!!! FAILED BINDER TRANSACTION!!!"
Рекомендуется хранить данные в этих пакетах как можно меньше, поскольку это общий буфер, на диск должно быть записано всего несколько килобайт.
ALOGE("!!! FAILED BINDER TRANSACTION !!!");
// TransactionTooLargeException is a checked exception, only throw from certain methods.
// FIXME: Transaction too large is the most common reason for FAILED_TRANSACTION
// but it is not the only one. The Binder driver can return BR_FAILED_REPLY
// for other reasons also, such as if the transaction is malformed or
// refers to an FD that has been closed. We should change the driver
// to enable us to distinguish these cases in the future.
Ссылка: http://developer.android.com/reference/android/os/TransactionTooLargeException.html
Буфер транзакции Binder имеет ограниченный фиксированный размер, в настоящее время 1 Мб, который совместно используется всеми транзакциями, выполняемыми для процесса. Следовательно, это исключение может быть брошено, когда происходит много транзакций, даже если большая часть отдельных транзакций имеет умеренный размер.
Я не нашел предела в размере, который мог бы хранить в пакете, используемом для сохранения состояния Activity. Я сделал несколько тестов и смог успешно сохранить около 175 мб, прежде чем я получил исключение из памяти, пытаясь выделить данные, которые я пытался сохранить.
Я думаю, что максимальный размер пакета равен 1024 KiloBytes. Чтобы перенести большие объекты между действиями, вы должны попробовать другие способы (кэш памяти, локальное хранилище и т.д.).
Да, у него есть, и теперь в андроиде Нуга он потерпит крах, если вы превысите предел примерно (500Kb).
В соответствии с Google Android API дата должна быть меньше 50K.
Да, он имеет ограничение 1 МБ.
Вы можете использовать класс Singleton
для передачи данных.