上一篇说了Activity,Fragment和Service,今天来说说四大组件中的另外两个吧。

BroadcastReceiver:

广播在实际开发中非常有用,是各个组件间通讯的利器。广播接收器分为两种,一种是静态注册的,在xml文件中注册,这种是全局性质的广播接收器

另外一种是在代码中动态注册的,要记得销毁,这种一般是作为组件的内部类,来接受消息,比如说像Activity和Service之间的通讯,在Activity中注册接收器,Service执行完发一个广播通知

ContentProvider:

作为4大组件之一,ContentProvider感觉是平时最容易被忽略的组件。作为内容提供者,暴露一个Uri出去。

举三个例子吧:相册选择照片,onActivityResult()中返回的就是一个Uri,可以根据Uri找到图片的真实地址(这个貌似不是ContentProvider,就当说Uri吧)

第二个,自定义一个ContentProvider,里面是sp或者沙盒内的数据库,文件等私有数据,对外暴露一个Uri,给另外一个进程调用,增删改查,查出来的是游标

第三个,系统的ContentProvider,如下图,查系统联系人用的就是系统暴露出来的Uri,查出来的都是游标

// 获取用来操作数据的类的对象,对联系人的基本操作都是使用这个对象
ContentResolver cr = getContentResolver();
// 查询contacts表的所有记录
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

说说BroadcastReceiver和ContentProvider的更多相关文章

  1. Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)

    转载于:http://blog.csdn.net/byxdaz/article/details/9708491 http://blog.csdn.net/q876266464/article/deta ...

  2. 27 个问题突破所有重难点,BroadcastReceiver 、ContentProvider 知多少?「建议收藏」

    前言 距离上次更新过去一周多了,打破了之前两到三天一更的惯例,主要还是这部分内容太多了. 原先想把 BroadcastReceiver .ContentProvider 分两篇来总结,但的确,这两大组 ...

  3. [转]Android四大核心组件:Activity+Service+BroadcastReceiver+ContentProvider

    原文地址:http://c.biancheng.net/view/2918.html Android 作为一个移动设备的开发平台,其软件层次结构包含操作系统 (OS).中间件 (MiddleWare) ...

  4. Android探索之AIDL实现进程间通信

    前言: 前面总结了程序间共享数据,可以使用ContentProvider也可以使用SharedPreference,那么进程间怎么共享内存呢?Android系统中的进程之间不能共享内存,因此,需要提供 ...

  5. Android安全攻防战,反编译与混淆技术完全解析(下)

    在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.通过这些内容我们也能看出来,其实我们的程序并没有那么的安全.可能资源被反编译影响还不是很 ...

  6. Eclipse与Android源码中ProGuard工具的使用

    由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...

  7. 疯狂Android讲义 - 学习笔记(五)

    第五章 Android使用统一的Intent对象来封装“启动意图”,不管是启动Activity.Service组件.或者BroadcastReceiver等,提供了一致的编程模型.Intent设计有点 ...

  8. Intent属性详解一 component属性

    先看效果图 概述 在介绍Component之前,我们首先来了解ComponentName这个类:ComponentName与Intent同位于android.content包下,我们从Android官 ...

  9. android 开发项目笔记1

    1.xml文件中@string/name   @+id/name  @id/name  的用法与区别: @string/name  一般长用于从别的资源中获取键值对 @+id/name  为控件指定名 ...

随机推荐

  1. React之组件通信

    组件通信无外乎,下面这三种父子组件,子父组件,平行组件(也叫兄弟组件)间的数据传输.下面我们来分别说一下: 父子组件: var Demo=React.createClass({ getInitialS ...

  2. 以太坊的crypto模块--以太坊源码学习

    以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp2 ...

  3. python标准库]Hashlib

    hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法. 在学习hashlib模块之前,先来看 ...

  4. 网络编程3之TCP/IP协议

    在TCP/IP协议中,最重要的协议是[TCP.UDP.IP]协议 1.TCP/IP协议特点 1)Internet上不同系统之间互联的一组协议 2)为分散和不同类型的硬件提供通用的编程接口. 3)TCP ...

  5. 向EXECL文件中导入数据的同时插入图片

    因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下. 首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {0 ...

  6. nodeJS实现简单网页爬虫功能

    前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码,以hao123网站的头条页面为例 http://tuijian.hao123.com/h ...

  7. Vulkan Tutorial 11 Shader modules

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 与之前的图像API不同,Vulkan中的着色器代码必须以二进制字节码的格式使用,而不 ...

  8. 使用KeePass愉快的来管理你的密码

    不要老是使用同一个密码 这话说了好多次了,以前的CSDN被拖库,或者是好多xx照门,都告诉我们不宜使用用一个密码. 现在我各个网站的密码都不一样,而且复杂的我都记不住,例如,我的前Google账户密码 ...

  9. if 一元二次方程求根

    if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...

  10. [1] Entity Framework

    开发框架之Entity Framework