外观
如何理解Binder 大数据传输限制?
标准回答
官方对Binder事务缓冲的常见限制说明是约1MB,并由进程中同时进行的事务共享,不是每个参数或每次调用都拥有独立1MB。对象封送和多个并发事务也占资源,所以不能把载荷刚好控制在1MB当作安全方案。
图片或大数据应优先使用文件描述符、共享内存或可授权的URI,把控制信息与数据传输分开。仍需要设计所有权、访问权限、读写同步和释放时机。
Intent、Bundle或保存状态里放大Bitmap会把问题带到IPC或状态恢复流程,Parcelable也不会自动绕开传输大小和内存成本。
追问与回答
Parcelable比Serializable快,所以能传任意大小吗
不行。序列化效率与Binder事务容量是两回事,大对象还会增加复制、分配和GC负担。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q047