Open chenyabingsuny opened 5 years ago
同样问题
TransactionTooLargeException: 通过Intent传递或者返回的数据是存放在一个叫做Binder transaction buffer的缓存区,这个缓冲区的大小为1Mb(Android 28 Platform),当缓冲区不够用时就会抛出异常
如果有多个数据传递同时进行,是共用缓冲区的1Mb,而不是每一个传输各分配1Mb缓存。这就有可能当多个传输同时进行时,数据大小小于1M还是抛出TransactionTooLargeException异常
建议的解决方法就是尽可能减小传输的数据,至于具体要多效合上也没个具体的数值,也不可能知道,因为并发传输的数量不固定,但是至少可以肯定的是超过1M肯定会抛异常
解决方法 根据官方的建议就是减小传输的数据大小,或者拆分数据分次传输,但是如果数据量真的很大且需一次性传输可参考以下:
1.数据保存到static全局变量中
2.数据保存到本地存储中,比如本地文件或数据库,在目标Activity中再提取出来
3.通过EventBus.postSticky传递包含传递数据的粘性事件,在目标Activity中接收该事件提取数据
Second failure launching com.kismartstd.employee/cn.bingoogolapple.photopicker.activity.BGAPhotoPickerPreviewActivity, giving up android.os.TransactionTooLargeException: data parcel size 676704 bytes