Android 开发 —— Android四大组件

来源:互联网 发布:如何删除淘宝里的评价 编辑:程序博客网 时间:2024/05/22 06:10

-- Android 四大组件:

Activity、Service、BroadcastReceiver 和 ContentProvider


Android 的其中三大组件 Activity、Service 和 ContentProvider 都必须在 AndroidManifest 中注册。

而对于 BroadcastReceiver 来说,它既可以在 AndroidManifest 中注册,也可以通过代码来注册。

在调用方式上,Activity、Service、和 BroadcastReceiver 需要借助 Intent,而 ContentProvider 则无须借助 Intent 。


(1) Activity 是一种展示型组件,用于向用户直接地展示一个界面,并且可以接收用户的输入信息从而进行交互

Activity 的启动由 Intent 触发,其中 Intent 可以分为显式 Intent 和 隐式 Intent,

-- 显式 Intent 可以明确地指向一个 Activity组件;

-- 隐式 Intent 则指向一个或多个目标 Activity 组件,当然也可能没有任何一个 Activity 组件可以处理这个隐式 Intent。

一个 Activity 组件可以具有特定的启动模式


(2) Service 是一种计算型组件,用于在后台执行一系列计算任务

Service 组件有两种状态:启动状态和绑定状态。

-- 当 Service 组件处于启动状态时,这个时候 Service 内部可以做一些后台计算,并且不需要和外界有直接的交互。

尽管 Service 组件是用于执行后台计算的,但是它本身是运行在主线程中的,因此耗时的后台计算仍然需要在单独的线程中去执行。

-- 当 Service 组件处于绑定状态时,这个时候 Service 内部同样可以进行后台计算,但是处于这种状态时外界可以很方便地和 Service 组件进行通信。

Service 组件也是可以停止的,停止一个 Service 组件稍显复杂,需要灵活采用 stopService 和 unBindService 这两个方法才能完全停止。


(3) BroadcastReceiver 是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息

BroadcastReceiver 注册有两种方式:静态注册和动态注册。

-- 静态注册是指在 AndroidManifest 中注册广播,这种广播在应用安装时会被系统解析,此种形式的广播不需要应用启动就可以收到相应的广播。

-- 动态注册广播需要通过 Context.registerReceiver() 来实现,并且在不需要的时候要通过 Context.unregisterReceiver 来解除广播,

此种形式的广播必须要应用启动才能注册并接收广播,因为应用不启动就无法注册广播,无法注册广播就无法收到相应的广播。


(4) ContentProvider 是一种数据共享型组件,用于向其他组件乃至其他应用共享数据

对于一个 ContentProvider 组件来说,它的内部需要实现增删改查这四种操作,在它的内部维持着一份数据集合,这个数据集合

既可以通过数据库来实现,也可以采用其他任何类型来实现,比如 List 和 Map,ContentProvider 对数据集合的具体实现并没有任何要求。

需要注意的是,ContentProvider 内部的 insert、delete、update 和 query 需要处理好线程同步,因为这几个方法是在 Binder 线程池中被调用的,

另外 ContentProvider 组件也不需要手动停止。

原创粉丝点击