什么是组件 | 组件作用 | 组件化的指导思想 |
---|---|---|
是对数据和方法的简单封装,功能单一,高内聚,并且是业务能划分的最小粒度 | 侧重于单一功能的内聚,偏向于解耦 | 分而治之,并行开发,一切皆组件 |
一、Activity组件
Activity是Android最重要的组件,负责用户界面的设计
-
Activity用户界面框架采用MVC 模式(Model View Controller)
控制器:负责接受并响应程序的外部动作
通过视图:反馈应用程序给用户的信息(UI 界面反馈)
模型:应用程序的核心,用于保存数据和代码
Activity之间通过Intent进行通信
二、Service组件
一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序
三、BroadcastReceiver组件
-
在Android系统中,当有特定事件发生时就会产生相应的广播
- 例如,开机启动完成、收到短信、电池电量改变、网络状态改变等
NotificationManager(通知管理器)会在手机的状态栏里产生一个具有提示音的通知,用户通过下滑手势可以查看相关信息
BroadcastReceiver(广播接收者)接收来自系统或其他应用程序的广播,并做出回应
四、ContentProvider组件
为了跨进程共享数据, Android提供了ContentProvider接口,可以在无须了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作
五、Context
-
在应用程序中Context的具体实现子类就是:Activity,Service,Application
- Context数量 = Activity数量 + Service数量 + 1
BroadcastReceiver、ContentProvider并不是Context的子类,其所持有的Context都是由其他组件传递过来的
Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供
Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity、Service等系统组件才能够正常工作,而这些组件并不能采用普通的Java对象创建方式,new一下就能创建实例了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context。可以这样讲,Context是维持Android程序中各组件能够正常工作的一个核心功能类
六、Application
当Android程序启动时系统会创建一个Application类型的对象,用来存储系统的一些信息完成数据传递、共享和缓存等操作
Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期,且是全局、单例的,即在不同的Activity和Service中获得的对象都是同一个对象
七、意图对象Intent
Android提供轻量级的进程间通信机制Intent,使跨进程组件通信和发送系统广播成为可能,组件Activity、Service和BroadcastReceiver都是通过消息机制被启动(激活)的,其使用的消息就封装在对象Intent里
八、Android应用程序的运行入口
在一个Android应用程序开始运行的时候,会单独启动一个进程(Process)。默认的情况下,这个应用程序中的所有组件(Activity、Service、BroadcastReceiver和ContentProvider)都会运行在这个进程里。
一个Android应用程序通常由多个Activity组成,但只有一个主Activity。在项目清单文件中使用<activity>标签注册主Activity时,还需要内嵌<intent-filter>、<action>和<category>标签,以此说明该Activity为Android应用程序的入口。定义一个MainActivity.java为应用的主Activity代码如下:
<activity android:name=".activity1" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>