Кажется, мы не можем проанализировать более 1 МБ в намерении.
Сбой транзакции Binder, поскольку она была слишком большой.Во время удаленного вызова процедуры аргументы и возвращаемое значение вызова передаются как объекты Parcel, хранящиеся в буфере транзакций Binder.Если аргументы или возвращаемое значение слишком велики для размещения в буфере транзакций, вызов завершится неудачно и будет выдан TransactionTooLargeException
.
Буфер транзакций Binder имеет ограниченный фиксированный размер, в настоящее время равный 1 МБ, который используется всеми выполняющимися транзакциями для процесса.Следовательно, это исключение может быть вызвано, когда выполняется много транзакций, даже если большинство отдельных транзакций имеют умеренный размер.
Возможны два результата, когда удаленный вызов процедуры вызывает исключение TransactionTooLargeException.Либо клиент не смог отправить свой запрос в службу (скорее всего, если аргументы были слишком велики для размещения в буфере транзакций), либо службе не удалось отправить свой ответ обратно клиенту (скорее всего, если возвращаемое значение былослишком большой для размещения в буфере транзакций).Невозможно сказать, какой из этих результатов действительно произошел.Клиент должен предположить, что произошел частичный сбой.
Ключом к исключению TransactionTooLargeException является сохранение относительно небольших транзакций.Постарайтесь минимизировать объем памяти, необходимый для создания Parcel для аргументов и возвращаемого значения удаленного вызова процедуры.Избегайте передачи огромных массивов строк или больших растровых изображений.Если возможно, попробуйте разбить большие запросы на более мелкие части.
Если вы внедряете службу, это может помочь наложить ограничения по размеру или сложности на запросы, которые могут выполнять клиенты.Например, если результирующий набор может стать большим, не позволяйте клиенту запрашивать более нескольких записей одновременно.В качестве альтернативы, вместо того, чтобы возвращать все доступные данные сразу, сначала верните необходимую информацию и заставьте клиента запрашивать дополнительную информацию по мере необходимости.