Android四大组件及Android组件管理者——Manifest文件

要说Android四大组件,要先了解Android应用程序的 Manifest.xml文件,这是个清单文件,几乎App的所有组件都要在这里面注册(有些组件可以用代码注册)。
Android应用程序由松散耦合的组件组成,并使用应用程序Manifest绑定到一起。 应用程序Manifest描述了每一个组件和他们之间的交互方式,还用于指定应用程序元数据、其硬件和平台要求、外部库以及必须烦人权限。
应用程序Manifest以xml的文件形式存储于项目层次中的最底层,包含
Activity、
Service、
ContentProvider 和
BroadcastReceiver
的节点,并使用IntentFilter意图过滤器和权限来确定这些组件之间以及这些组件和其他应用程序的交互。

Android的组件包括:
1. Activity
2. Service
3. ContentProvider
4. BroadcastReceiver
5. Intent
6. Widget
7. Notification

其中
 Activity、
 Service、
 ContentProvider 和
 BroadcastReceiver这四大组件必须在Manifest中注册,而
四大组件
的BroadcastReceiver可以是静态注册,或是动态注册(通过java代码注册,而使用动态注册,则必须在Activity生命周期onDestroy()方法中手动将其注销)。
Manifest.xml的结构如下图

Manifest.xml

的标签及其意义


manifest是AndroidManifest.xml的根节点。它必须包括一个<application>节点, 并且设定xmlns:android和包属性。

属性:
A xmlns:android
定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。
B package
指定本应用内java主程序包的包名,它也是一个应用进程的默认名称。它也是生成的应用程序资源文件的索引类(R)的包名。
C sharedUserId
表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据, 第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。
D sharedUserLabel
一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义
E、versionCode
是给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次,比如第一版一般为1,之后若要更新版本就设置为2,3等等。
F、versionName
这个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。。。
G、installLocation
程序的安装位置,有三个值可以选择:internalOnly、auto、preferExternal
internalOnly--APK必须安装到内部存储空间。而且安装了之后,不能将程序移动到SD卡上。
auto--系统将会根据存储空间去选择将APK安装在内部存储空间还是SD卡上。安装之后,可以在内部存储空间和SD卡之间移动。
preferExternal--系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)

注:以下程序如若安装在外部存储,可能出现的问题

1. 具有Widget、Live Wallpaper和Live Folder的应用程序 
Widget、Live Wallpaper和Live Folder将从主屏幕上移除,而且在重启系统之前可能不再可用。

2. 提供不中断服务的应用程序
应用程序和它运行的服务将被停止,并且不会自动重新启动。
3. 输入法引擎(Input Mmethod Engine,IME)
安装在为不存储的IME都会被禁用,在外部存储器再次可用后,用户必须重新选择IME。
4. 设备管理器
DeviceAdminReceiver及其管理能力将被禁用。

所以这些应用程序不宜安装在外部存储!

 

组件1——Activity

Activity 是应用程序表示层,使用Fragment碎片和View视图来布局和显示信息,以及响应用户动作,在桌面开发中就相当于Form框架。
Activity 的生存期
Activity栈,是一个后进先出的集合,当一个新的Activity 被启动时,它就被移动到栈顶,变为活动状态,如果使用Back按钮,则Activity 被关闭,栈中下一个Activity 就会移动到栈顶,变为活动状态。
注:android的内存管理器(类似于Java垃圾回收机制)决定终止那个应用程序来释放资源时,它会使用这个Activity 栈来决定应用程序的优先级。

组件2——Service 后台服务
Service组件在后台运行,没有UI,可以更新数据源和Activity、触发通知和广播Intent,被用来执行一些时间较长的任务,或者不需要和用户交互的任务,是后台服务。

组件3——ContentProvider 内容提供者

ContentProvider 是一个可共享的持久数据存储器,用来管理和持久化程序数据,通常会与SQL数据库交互,是应用程序之间共享数据的首选方法。开发人员可以通过配置自己的ContentProvider 来允许其他应用程序访问,也可以访问其他应用程序提供的ContentProvider 。

组件4——BroadcastReceiver 广播接收者

BroadcastReceiver 是Intent侦听器。可以监听到那些匹配指定的过滤标准的广播,BroadcastReceiver 会自动启动应用程序来响应某个收到的Intent,这个特点是他们成为了事件驱动应用程序的最佳选择。

其他组件——Intent、Widget、Notification

1. Intent
Intent 是一个强大的应用程序之间的消息传递的框架,可以用来启动和停止Activity和Service,在系统范围内或向目标 Activity、Service、或BroadcastReceiver广播消息,以及请求对特定的一条数据执行操作。
2. Widget

Widget 是通常添加到设备主屏幕的可视化应用程序组件,是BroadcastReceiver的特殊变体,可用于创建动态的交互式应用程序组件,

3. Notification

Notification 是一个通知组件,允许向用户发送消息,但却不会过分吸引用户的注意力或打断当前Activity,是应用程序不可见或不活动时吸引用户的注意的首选方法。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值