安卓基础框架与四大组件分析

3 基础框架与四大组件分析
3.1 Android体系结构
安卓分为四个层,从高层到底层分别是应用程序层(Applications),应用程序框架层(Application Framework),系统运行库层(Libraries)和运行环境层(Android Runtime)、linux核心层(Linux Kernel)。
应用程序层:所有的应用程序层都是用java语言编写,应用程序由一个或多个组件组成。安装在安卓手机上的应用程序都是属于这一层的,比如手机上的一些联系人,QQ,微信等应用。应用程序存储在手机的内部存储区,且按包名存放,需要特定的程序才能查看。
应用程序框架层:主要提供了建构应用程序时可能用到的各种APIs, 所有的应用程序是一套服务和系统。
库和运行环境层:Android 包含一些C/C++库,这些库能够被Android 系统不同的组件使用。它们通过Android应用程序框架为开发者提供服务。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。
Linux内核层:Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。这一层是为硬件提供底层的驱动,例如蓝牙,Wi-Fi驱动等等。
3.2 Android四大基本组件
Android四大基本组件:活动(Activity)、广播接收器(BroadcastReceiver)、服务(Service)、内容提供商(Content Provider)。
Activity:称为活动组件(也称界面程序),它会加载布局文件(属于资源文件),如setContentView(R.layout.activity_main)。Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity组件都会在清单文件里注册。在AS环境中,开发Activity所使用的基类是AppCompatActivity。
在Android的程序当中,Activity 一般代表手机屏幕的一屏。在Activity 当中可以添加一些Button、Check box 等控件。一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。
Activity生命周期指Activity从创建到销毁的过程。
Activity表现为四种状态:
活动状态Active:Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互。
暂停状态Pause:Activity在界面上被部分遮挡,不再处于用户界面的最上层,且不能够与用户进行交互。(如弹出消息框)
停止状态Stop:Activity被其他Activity全部遮挡,界面完全不能被用户看到。(如玩游戏时来电了)
非活动状态Dead:Activity没有启动或者被finish()。

Service: 是一种长生命周期、没有可视化界面、运行于后台的一种服务程序。激活和停止Service通常是由其他组件完成的。例如,组件Activity的超类Context提供了激活和停止Service的方法。如同Activity组件一样,Service组件必须在清单文件里使用相应的标签。
服务类型可划分为本地服务和远程服务。
本地服务用于应用程序内部(同一个apk内被调用)。使用startService()启动服务,使用stopService()停止服务。在服务内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
远程服务用于应用程序之间(被另一个apk调用)。可以定义接口并把接口暴露出来,以便其他应用进行操作,比如一个天气预报服务。客户端建立到服务对象的连接,并通过那个连接来调用服务。通过调用bindService()方法建立连接并启动服务,调用 unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。远程服务提供给可被其他应用复用。
服务类型也可划分为绑定式服务与非绑定服务。绑定式服务中被绑定的service是当其他组件(一个客户)调用bindService()来创建的。客户可以通过一个IBinder接口和service进行通信。客户可以通过 unbindService()方法来关闭这种连接。一个service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁service。

BroadcastReciver:广播接收器,对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。系统广播就是由Android系统发出的广播,如系统启动完成了、来电话了、来短信了等等。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast () 将它们自己的Intent Broadcasts广播给其他应用程序。

ContentProvider:实现应用程序间数据共享最标准的方式,是Android四大组件中的最后一个。应用程序通过ContentResolver对象访问ContentProvider中的数据,该对象提供了持久层数据的CRUD方法。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值