我是android应用程序开发的新手,在研究基本的android组件时,我对意图和内容提供者感到困惑,因为两者都被用来将数据从一个应用程序/组件发送到另一个应用程序/组件。如果有意图,我们可以使用捆绑或附加功能发送数据,那么为什么我们要使用内容提供商呢?有人可以用一个例子向我解释一下吗?
另外,我们是否可以仅使用内容提供程序访问 Android 中的数据库,这是我们使用内容提供程序的唯一原因吗?
两者都用于将数据从一个应用程序/组件发送到另一个应用程序/组件
并不真地。
Android 有四个组件:
Activity
Service
BroadcastReceiver
ContentProvider
An Intent
这些都不是。一个Intent
is involved当我们启动一个活动、启动或绑定到一个服务、或者发送一个广播时。然而,比较一个Intent
to a ContentProvider
类似于将铲子与靴子进行比较,认为两者都可以用来搬运泥土。虽然确实如此,但通常靴子是involved运土,但运土的实际工具是由其他东西处理的,例如独轮手推车。
如果有意图,我们可以使用捆绑或附加功能发送数据,那么为什么我们要使用内容提供商呢?
我们经常针对不同的情况使用不同的工具。例如,您会发现用渔网提水相当困难。
这四个组件中的每一个都有不同的作用,特别是在与进程间通信 (IPC) 相关的方面:
An Activity
驱动我们的大部分用户界面,包括从其他应用程序启动活动(或让其他应用程序启动我们的活动之一)
A Service
存在于逻辑上与用户界面分离的长时间运行的操作,包括使用其他应用程序实现的服务(或让其他应用程序使用您发布的服务)
A BroadcastReceiver
是一个发布/订阅消息系统,允许您跨进程边界向任意订阅者发送消息,或订阅来自任意发送者的消息
A ContentProvider
用于批量数据传输,无论是数据库样式结构(行和列)的形式还是流的形式,特别是与其他应用程序一起使用
我们还可以仅使用内容提供程序访问 Android 中的数据库吗
不。毕竟,如果这是真的,就不可能访问数据库。 AContentProvider
不是通过魔法出现的。它必须由程序员编写。如果一个ContentProvider
只能通过以下方式访问数据库ContentProvider
,我们就会遇到问题。
这是我们使用内容提供商的唯一原因吗?
不。除了提供数据库风格的 API 之外,ContentProvider
还可以发布流。这对于在应用程序之间获取任意数据非常重要,例如电子邮件客户端向 PDF 查看器提供 PDF 附件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)