解决方法
both are being used to send data from one application/component to another application/component
并不是的.
Android中有四个组件:
>活动
>服务
> BroadcastReceiver
> ContentProvider
意图不是那些.当我们启动活动,启动或绑定服务或发送广播时,会涉及Intent.然而,将Intent与ContentProvider进行比较类似于将铲子与靴子进行比较,认为两者都可用于携带污垢.虽然如此,但通常情况下,靴子涉及携带污垢,但携带污垢的实际方法是由其他东西处理,例如手推车.
In case of intents we can send data using bundle or extras so why do we use content providers.
我们经常针对不同情况使用不同的工具.例如,您会发现在渔网中携带水相当困难.
四个组件中的每一个都有不同的作用,特别是与进程间通信(IPC)有关:
>活动驱动我们的大部分用户界面,包括从其他应用程序启动活动(或让其他应用程序启动我们的某项活动)
>对于长期运行的操作存在服务,这些操作在逻辑上与用户界面分离,包括使用由其他应用程序实现的服务(或使其他应用程序与您发布的服务一起使用)
> BroadcastReceiver是一个发布/订阅消息传递系统,允许您向任意订阅者发送消息,或者跨进程边界订阅来自任意发件人的消息
> ContentProvider用于批量数据传输,无论是以数据库样式结构(行和列)的形式还是以流的形式,特别是用于与其他应用程序一起使用
Also can we access database in android only using content provider
不.毕竟,如果这是真的,就无法访问数据库. ContentProvider不会出现魔法.它必须由程序员编写.如果ContentProvider只能通过ContentProvider访问数据库,我们就会遇到问题.
is this the sole reason why we use content providers ?
否.除了提供数据库样式的API之外,ContentProvider还可以发布流.这对于在应用程序之间获取任意数据非常重要,例如电子邮件客户端可以为PDF查看器提供PDF附件.