本文主要对安卓几大组件进行简单介绍,对于每个组件的详细使用会在后面文章中更新。
1.Activity
Activity是Android中最常用的组件,一个activity对应一个界面。activity显示的每个内容都是有View对象构建的,这些View对象一般是在res/layout下的XML文件中声明,一般我们通过ID属性来唯一标识某个View对象,然后在程序中可通过findViewByID(R.id.xxx)来引用这个对象。
一般启动Activity有3种方法:
(1)在onCreate()方法中调用setContentView()方法来指定将要启动res/layout目录下的哪个布局文件,如setContentView(R.layout.main)。
(2)调用startActivity(),用于启动一个新的Activity。
(3)startActivityforResult(),用于启动一个Activity,并在该Activity结束时返回信息给调用者。
一般返回Activity也有三种方法:
(1)一般用finish(),关闭Activity
(2)用setResult()方法,可以返回数据给上一级Activity
(3)当使用startActivityforResult()启动Activity时,则需要调用finishActivity()来关闭其父Activity。
2.Service
Service没有界面,会在后台一直运行。我们可以用它来播放背景音乐、从网上获取数据、执行运算等,并将结果提供给Activity来展示给用户。
启动Service一般有两种方法:
(1)使用stratService()方法启动Service,可通过stopService()方法结束Service;
(2)使用bindService()方法启动,可调用unbindService()方法结束。
3.BroadcastReceiver
BroadcastReceiver是用来接收广播信息,并做出相应处理。使用BroadcastReceiver一般有如下几个步骤:
(1)注册BroadcastReceiver,可以在AndroidManifest中静态注册(<receiver></receiver>标签中声明,并通过<Intent-filter>标签过滤条件);也可以在Java代码中动态注册:先创建IntentFilter对象设置Intent过滤条件,再通过Context.registerReceiver()方法注册监听,通过Context.unregisterReceiver()方法来取消监听。
(2)将信息封装到Intent对象中
(3)调用Context.sendBroadcast()或Context.sendStickyBroadcast()或者Context.sentOrderedBroadcast()将Intent对象广播出去(前两个方法会随机执行所有符合条件的接收者的方法,第三个方法会按照IntentFilter的优先级执行)
(4)所有注册了的BroadcastReceiver会检查IntentFilter是否与广播出来的Intent相同,如果相同则调用onReceive()方法执行相应代码。
4.Intent
Intent是不同组件之间通信的媒介,由6个部分组成:组建名称、Action、Data、Category、Extra、Flag;后续将仔细介绍Intent。
5.ContentProvider
ContentProvider是android提供的一种标准的数据共享机制,用来管理和共享应用程序的数据存储。
对于ContentProvider而言,最重要的就是数据模型Data Model和URI。
(1)数据模型:ContentProvider为所有需要共享的数据创建一个数据表,每条记录都有一个“_ID”字段用来标识数据
(2)URI(Uniform Resource Identifier,通用资源标识符):每个ContentProvider会对外提供一个公开的URI来标识自己的数据集。URI主要分为三个部分:scheme、authority(又包括host和port)和path,格式为 “scheme://host:port/path”。在安卓中URI都以“content://”开头。
6.Notification
用来提示用户,一般在Service或BroadcastReceiver中用来获得用户注意。