文章目录
前言
Android是由Google公司和开放手机联盟领导并开发的一种基于Linux的自由且开放源代码的操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,主要使用于移动设备。(来源:搜狗百科)
一、系统框架
Android的系统架构和其他操作系统一样,采用了分层架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
1.应用程序框架
开发人员可以完全访问核心应用程序所使用的API框架。隐藏在每个应用后面的是一系列的服务和系统:
- 丰富且可扩展的视图(Views)
作用:构建应用程序。包括:列表(Lists)、网格(Grids)、文本框(Textboxes)、按钮(Buttons),甚至可以嵌入web浏览器。 - 内容提供器(Content Providers)
作用:使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享数据。 - 资源管理器(Resource Manager)
作用:提供非代码资源的访问,如本地字符串、图形和布局文件(Layout files)。 - 通知管理器(Notification Manager)
作用:使得应用程序可以在状态栏中显示自定义的提示信息。 - 活动管理器(Activity Manager)
作用:用来管理应用程序生命周期并提供常用的导航回退功能。
2.系统运行库
Android包含一些**C/C++**库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。核心库如下:系统C库、媒体库、Surface Manager、LibWebCore。
二、应用组件
Android开发四大组件分别是:
- 活动(Activity):用于表现功能。
- 服务(Service):后台运行服务,不提供界面呈现。
- 广播接收器(Broadcast Receiver):用于接听广播。
- 内容提供商(Content Provider):支持在多个应用中存储和读取数据,相当于数据库。
1.活动【Activity】
Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中。
在程序当中,Activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,Activity就相当于一个网页,在其中可以添加一些Button、Checkbox等控件。
一般一个Android应用是由多个Activity组成的。这多个Activity之间可以进行相互跳转。相比于网页跳转,细微区别在于Activity之间的跳转可能有返回值。
举例:从Activity A跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A一个返回值。
原理:当打开一个新屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性移除不必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存到堆栈中。
2.服务【Service】
Service的级别和Activity差不多,但是他不能自己运行,只能后台运行,并且可以与其他组件进行交互。
- Service是没有界面的长生命周期的代码。Service是一种程序,它可以运行很长时间,但是它却没有用户界面 。
举例:打开一个音乐播放器的程序,这个时候想要上网,打开Android浏览器,这时虽然已经进入了浏览器的程序,但是歌曲播放并没有停止,而是在后台继续一首接着一首的播放,这个播放就是由播放音乐的Service进行控制。当然这个Service也可以停止:①播放列表里面所有歌曲都结束②用户按下了暂停音乐播放的快捷键 - Service可以在和多场合应用中使用。
举例:①播放多媒体的时候用户启动了其他Activity时,程序要在后台继续播放。②检测SD卡上文件的变化③在后台记录地理信息位置的改变。
服务总是在后台!!! - 开启Service的两种方式:
(1)Context.startService():Service会经历onCreate()–>onStart()–>onDestroy()
tip1:Service如果运行起来,则可以省略onCreate,只调用onStart()【可以多次调用】
tip2:StopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用方法的话,Service会一直在后台运行。
(2)Context.bindService():Service会经历onCreate()–>onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,Context退出,Service就会调用onUnbind–>onDestroyed相应退出,所谓“绑定共存亡”。
3.广播接收器【Broadcast】
在Android中,Broadcast是一种广泛运用在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的Broadcast进行过滤接受,并响应的一类组件。
- 可以使用BroadcastReceiver来让应用对一个外部的事件做出响应。
举例:①当电话呼入这个外部事件到来的时候,②当下载一个程序成功完成的时候,可以利用BroadcastReceiver进行处理。 - BroadcastReceiver不能生成UI,也就是说对于用户来说是不透明的,用户不可见。Broadcast通过NotificationManager来通知用户事件的发生。
- BroadcastReceiver既可以在AndroidMainfest.xml中注册,也可以在运行时的代码中使用**Context.registerReceiver()**进行注册。只要注册,事件到来时,即使程序没有启动,系统也在需要时候启动程序。
- 各种应用还可以通过使用**Context.sendBroadcast()**将他们自己的Intent Broadcasts广播给其他应用程序。
4.内容提供【 Content Provider】
Content Provider是Android提供的第三方应用数据的访问方案。
在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。
应用想对外提供的数据,可以通过派生Content Provider类,封装成一枚Content Provider,每个Content Provider都用一个URI作为独立表示,例如:content://com.xxxx。和REST类似,URI有两种类型,一种是带id的,另一种是列表的。
三、平台优势
- 开放性 拥有更多的开发者,对于消费者来说,最大的受益是丰富的软件资源。
- 丰富的硬件 各式各样的产品,不会影响数据同步,甚至软件兼容。
- 方便开发 提供了一个十分宽泛、自由的环境,不受限制。
- Google应用 无缝对接Google优秀服务,例如地图、邮件、搜索等。
总结
以上就是今天要讲的内容,本文主要介绍了Android的系统框架和应用组件,以及如今的平台优势。