它是什么意思"内容提供商可以由系统实例化"?

时间:2016-04-19 07:08:53

标签: android android-contentprovider instantiation

在Android的组件中,有几次我遇到了一个句子

  

...可以由系统实例化

特别是here

  

内容提供商是否可以由系统实例化 - " true"如果它可以,并且"假"如果不是

那对于Content Provider来说意味着什么呢? (BTW Content Provider组件对我来说是新手 - 我知道其他Android组件)

  1. 何时可以发生Content Provider由系统实例化?
  2. 为什么会这样?
  3. 我的应用从这个系统实例化中获得了什么好处?

2 个答案:

答案 0 :(得分:0)

我无法分别回答3个问题,因为它们以某种方式交叉, 所以这里有一个小答案,我希望它是正确的,我希望你觉得它很有用:

截至何时/何时

你不应该使用new你必须使用创建实例的getContentResolver(),然后你可以调用正确的方法:query()update(),...

getContentResolver().update(...);

益处

如果CP位于其他应用中,并标记为公开

android:exported="true"

然后你可以在你的应用程序中使用它,但是怎么样? 并使用我的意思是查询/删除/更新...

如果您想使用new,则必须在项目中包含此CP的类/ jar /资源...这可能很难或不可能。而#34;系统"为您执行此操作 getContentResolver()提供(对于发布商和消费者):

  1. 灵活性
  2. 容易性
  3. 更安全

答案 1 :(得分:0)

所有Android应用程序组件Activity,Service,ContentProvider和BroadcastReceiver(动态除外)都会在请求到来时由系统实例化。

例如:

当有人使用startActivity()

调用Intent时,系统会实例化活动

类似地,当有人通过传递相应的URI使用ContentResolver.queryContentResolver.insert请求访问ContentProvider提供的数据时,系统也会实例化ContentProvider