【Android FrameWork】综合面试问题(1)

  • 了解各种跨进程传输数据的方式及各自优缺点

  • 了解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中的使用<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值