004 四大组件之ContentProviderRecord

2020-10-31  本文已影响0人  凤邪摩羯

一. 引言

作为四大组件之一的ContentProvider,相比来说是设计得稍逊色,有些地方不太合理,比如provider级联被杀, 请求provider时占用system_server的binder线程来wait()等。

即便很少自定义ContentProvider,但你也可以会需要使用到ContentProvider,比如通信录,Settings等; 使用Provider往往跟数据库结合起来使用,所以这里需要注意不要再主线程用provider做过多的io操作。

二. ContentProvider数据结构

先以一幅图来展示AMS管理ContentProvider所涉及的相关数据结构: 点击查看大图

content_provider_record

2.1 ContentProviderRecord

2.2 ContentProviderConnection

功能:连接contentProvider与请求该provider所对应的进程

  1. provider:目标provider所对应的ContentProviderRecord结构体;
  2. client:请求该provider的客户端进程;
  3. waiting:该连接的client进程正在等待该provider发布

2.3 ProcessRecord

2.4 AMS

2.5 ActivityThread

三. Provider使用过程

点击查看大图

Seq_provider

更多源码详细过程,见[理解ContentProvider原理]

上一篇 下一篇

猜你喜欢

热点阅读