ContentProvider所提供的接口中只有query是基于共享内存的,其他都是直接使用bind
- Android早期(2.2之前)所有操作都通过Binder
- 随着数据量增长,发现Query性能瓶颈明显
- 从Android 2.3开始,Cursor数据通过共享内存传输
这种设计体现了按需优化的思想:
- 80/20原则:优化最常见的大数据传输场景(Query)
- 简单性原则:小数据保持简单直接的Binder传输
- 性能平衡:在复杂性和性能间取得最佳平衡
这也是为什么在Android开发中,建议合理设计Query,避免返回过多不必要的数据,因为这个优化机制虽然在传输上高效,但创建和管理共享内存区域本身也有成本。
#Android#
查看6道真题和解析