android中的Intent vs Content Provider

Shi*_*wal 6 android

我是Android应用程序开发的新手,在研究基本的android组件时,我在意图和内容提供者之间感到困惑,因为它们都被用于将数据从一个应用程序/组件发送到另一个应用程序/组件.在意图的情况下,我们可以使用bundle或extras发送数据,那么我们为什么要使用内容提供者.有人可以用一个例子向我解释一下.

我们也可以使用内容提供商访问android中的数据库,这是我们使用内容提供商的唯一原因吗?

Com*_*are 10

两者都用于将数据从一个应用程序/组件发送到另一个应用程序/组件

并不是的.

Android中有四个组件:

  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

一个Intent是没有这些的.一个Intent参与,当我们开始活动,启动或绑定到服务,或发送广播.然而,比较IntentContentProvider是类似于一个铲引导比较,认为既可以用于携带污垢.虽然如此,但通常情况下,靴子涉及携带污垢,但携带污垢的实际方法是由其他东西处理,例如手推车.

在意图的情况下,我们可以使用bundle或extras发送数据,那么我们为什么要使用内容提供者.

我们经常针对不同情况使用不同的工具.例如,您会发现在渔网中携带水相当困难.

四个组件中的每一个都有不同的作用,特别是与进程间通信(IPC)有关:

  • 一个Activity驱动散装我们的用户界面,包括从其他应用启动活动(或具有我们的活动之一由其他应用启动)

  • 一个Service为逻辑上从用户界面分离再运行的操作,包括由其他应用程序实现的服务工作中存在(或具有其它应用与服务工作,你发布)

  • A BroadcastReceiver是一个发布/订阅消息传递系统,允许您向任意订阅者发送消息,或者跨越进程边界订阅来自任意发件人的消息

  • A ContentProvider用于批量数据传输,无论是以数据库样式结构(行和列)的形式还是以流的形式,特别是用于与其他应用程序一起使用

我们也可以使用内容提供商访问android中的数据库

不.毕竟,如果这是真的,就无法访​​问数据库.A ContentProvider不会出现魔法.它必须由程序员编写.如果a ContentProvider只能通过a访问数据库ContentProvider,我们就会遇到问题.

这是我们使用内容提供商的唯一原因吗?

不是.除了提供数据库样式的API之外,ContentProvider还可以发布流.这对于在应用程序之间获取任意数据非常重要,例如电子邮件客户端可以为PDF查看器提供PDF附件.