Android 四大组件 All In One
Android 四大组件 All In One
Android 基础知识,开发教程
Android 四大组件
Activity
Service
Broadcast Receiver
Content Provider
http://developer.android.com/intl/zh-cn/guide/components/fundamentals.html
- Activity
https://developer.android.com/intl/zh-cn/guide/components/activities.html
- Service
https://developer.android.com/intl/zh-cn/guide/components/services.html
- Broadcast Receiver
https://developer.android.com/intl/zh-cn/reference/android/content/BroadcastReceiver.html
https://developer.android.com/intl/zh-cn/guide/topics/manifest/receiver-element.html
- Content Provider
https://developer.android.com/intl/zh-cn/guide/topics/providers/content-providers.html
Activity
从字面上理解,Activity是活动
的意思。一个Activity通常展现为一个可视化
的用户界面,是Android程序与用户交互的窗口,也是Android组 件中最基本也是最复杂
的一个组件。
从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。
从内部逻辑来 看,Activity需要为了保持各个界面状态
,需要做很多持久化
的事情,还需要妥善管理生命周期
,和一些转跳逻辑
。
对于开发者而言,需要派生
一个 Activity的子类,进而进行编码实现各种功能方法。
Service
服务
是运行在后台
的一个组件,从某从意义上说,服务就像一个没有界面
的Activity。
它们在很多Android的概念方面比较接近,封装有一个完整的功 能逻辑实现,接受上层指令,完成相关的事件,定义好需要接受的Intent提供同步和异步的接口。
Android中得服务其实与windows中得服务类 似,它执行长时间运行的操作,或运程进程执行工作。
服务不提供用户界面,例如在后台下载东西,播放音乐,在你播放音乐的同时还可以干其他事情,而不会阻塞
用于与其他活动的交互。
另一个组件,比如Activity可以启动一个服务,并运行或者绑定到它。
关于服务我们还可以引申出很多的词汇,比如RPC接口、 AIDL等等,但是这些我们都等到后面的章节去讲解。
Broadcast Receiver
广播接收者
,不执行任何任务,广播是一种广泛运用的在应用程序之间传输信息
的机制。
而 BroadcastReceiver 是对发送出来的广播进行过滤
接收并响应的一类组件。
Broadcast Receiver 不包含任何用户界面。
然而它们可以启动一个Activity以响应接受到的信息,或者通过NotificationManager
通知用户。
可以通过多种方式使用户知道有新的通知
产生:闪动背景灯、震动设备、发出声音等等。
通常程序会在状态栏
上放置一个持久的图标,用户可以打开这个图标并读取通知信息。
在 Android中还有一个很重要的概念就是Intent
,如果说Intent是一个对动作和行为的抽象描述
,负责组件之间程序之间进行消息传递。
那么 Broadcast Receiver组件就提供了一种把Intent作为一个消息广播
出去,由所有对其感兴趣的程序对其作出反应的机制。
Content Provider
内容提供者
,作为应用程序之间唯一的共享数据
的途径,Content Provider 主要的功能就是存储
并检索数据以及向其他应用程序提供访问数据的接口
。
Android有一个独特之处就是,在 Android 中,每个应用程序都是用自己的用户 ID
并在自己的进程
中运行。
这样的好处是,可以有效地保护系统及应用程序,避免被其他不正常应用程序所影响,每个进程都拥有独立的进程地址
空间和虚拟
空间。
Android的数据(包括files
, database
等 hellip;)都是属于应用程序自身,其他的应用是不能访问到的,更无法直接进行操作。
所以如果你想实现不同应用之间的数据共享
,就不得不用 ContentProvider了。
为了使其他程序能够操作数据
,在Android中,可以通过做成 ContentProvider 提供数据操作的接口。
其实对应用而言,也可以将底层数据
封装成 ContentProvider,这样可以有效的屏蔽底层操作的细节,并且使程序保持良好的扩展性和开放性。
Android提供了一些主要数据类型
的 Content Provider,比如音频、视频、图片和私人通讯录等。
可在 android.provider
包下面找到一些 android 提供的 ContentProvider。
可以获得这些Content provider,查询它们包含的数据,当然前提是已获得适当的读取权限
。
如果我们想公开
自己应用程序的数据
,可以创建自己的 Content provider 。
demos
(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!
refs
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/5193790.html
未经授权禁止转载,违者必究!