-
了解各种跨进程传输数据的方式及各自优缺点
-
了解TransactionTooLargeException的触发原因和底层机制
-
了解Bitmap传输底层原理
跨进程传大图有哪些方案
-
给图片保存到固定的地方,传key值(路径)给对方
-
问题:性能差,把图片写到文件需要耗时,对方读取文件也需要耗时
-
通过IPC的方式转发图片数据
-
不经过文件系统,但是需要多次拷贝
IPC方式传图
-
Binder:性能好,使用方便,但是大小有限制
-
Socket、管道:两次拷贝,也有大小限制
-
共享内存:性能不错
-
主要注意点
-
1.性能,减少拷贝次数
-
2.内存泄漏,资源及时关闭
TransactionTooLargeException
-
发出去的或者返回的数据量太大
-
Binder缓存用于该进程所有正在进行中的Binder事务
-
进程弃用binder机制会映射一块内存,大小是1M
-
跨进程通信申请的缓冲区大小是不能超过1M的
-
所有binder事务共享这1M内存空间,应该尽量避免同时跑多个事务,尤其是数据量很大的事务
-
大数据量打碎分批发,或按需发(官方建议)
总结 跨进程传递大图片的方式
-
图片写到文件,路径传到另一个进程,再读出来
-
intent传图,但是容易抛异常,原因是什么
-
binder调用传图,底层ashmem机制
2. ThreadLocal原理
关于更多面试题资料,可以前往 GitHub 自行查阅。
考察点
-
ThreadLocal的适用于什么场景?
-
ThreadLocal的使用方式是怎样的?
-
ThreadLocal的实现原理是怎样的?
ThreadLocal在FrameWork中的使用<