конкретного ответа не нашел. Нашел только что общий размер всех бандлов на процесс 1 мб)?
При попытке передать черех него объект больше 1мб будет вылет "слишком большая трвнзакция" Но он может случиться и раньше, на 50кб уже.
Bundle ограничен только размером памяти.
Размером оперативной памяти выделяемой процессу приложения?
Я так думаю, что не это интересует. Память выделяется так же как и любому другому объекту. Так что формулируйте вопрос точнее.
Могу ли я класть объекты в бандл размером 3, 5, 10 мегабайт?
Класть можешь, но переслать такой бандл не получится.
Ограничение на 1 мб как раз на транзакции?
Благодарю, понял
Если так ставить вопрос, то да. Это ж обычный объект. Но вы все тут так задаете вопросы, что радостно потом находите ответы на другой вопрос и обвиняете правильно ответившего, что он не прав и писаете кипятком. Вы-то хотели, видимо вот этого? https://developer.android.com/reference/android/os/TransactionTooLargeException.html The Binder transaction buffer has a limited fixed size, currently 1MB, which is shared by all transactions in progress for the process. Consequently this exception can be thrown when there are many transactions in progress even when most of the individual transactions are of moderate size.
Я никого не обвиняю, всем спасибо за ответы, я просто не совсем понял то, что нашел в Гугле (как раз то, что вы скинули) и решил тут уточнить
Смотря куда посылать. Через Binder много не переслать. А, например, в onSaveInstanceState можно и полгигабайта сохранять и восстанаваливать. И это тоже Bundle.
Так у бандла же ограничен объем как ты туда полгигабайта зальешь
А Binder выполняет транзакции между процессами? А для обычных транзакций, например, при навигации во фрагмент я в аргументы передам бандл 10 мб, то будет норм?
Ну, попробуй. Расскажешь тут. Просто это никому нафиг не надо. Есть масса более удобных способов передавать данные.
Между процессами и через интенты - через Биндер.
Обсуждают сегодня