mac_05185 2023-01-28 21:27 采纳率: 67.1%
浏览 47
已结题

安卓的内容提供者底层用binder实现,binder已经实现了进程间通信,为啥还需要内容提供者?

ContentProvider的底层是采用Android中的Binder机制,既然已经有了binder实现了进程间通信了为什么还会需要contentProvider?

  • 写回答

4条回答 默认 最新

  • 江上小渔民 2023-01-28 23:02
    关注

    原因:主要是效率问题,传输大量数据的时候使用binder来完成会非常低效,而以binder为底层的ContentProvider能做的更加高效。

    解释:ContentProvider是基于binder和匿名共享内存来实现的。首先把需要在进程间传输的数据都写到共享内存中去,然后只通过Binder进程间通信机制来传输一个共享内存的打开文件描述符给对方,对方拿到打开文件描述符就可以对共享内存的数据进行读写。

    PS:就相当于我要和你沟通,想告诉你非常非常多的话,如果通过邮差一个字一个字地转给你就太低效了,我把要告诉你的内容写成一本书放在某个地方,邮差他只要告诉你书的位置就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 1月28日

悬赏问题

  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析