Libraries层:即核心类库。这一层提供了动态库(也是共享库)、Android运行时库、Dalvik虚拟机等。在这一层中也真正体现了开源库这一特点,开发工程师可以根据需求设计出新的库,满足用户需要。和框架层相比,这一层需要单独加载到进程空间中运行。Android运行时库既包含了大多数Java类库以及接口,同时也加入Android的SDK,这样使功能更加丰富了。Dalvik虚拟机主要任务是对任务进程的管理,垃圾回收等。
Framwork层:即框架层,它是Android系统框架中最核心的部分。Framwork层的框架提供一些设计程序时必须遵循的标准,在标准之上进行必要的扩展。Framwork层提供了多种系统服务,在图2.1上可以清晰看到,一共有10个系统服务,包括窗口管理器,包资源管理器,视图管理器等等。每个服务机制都运行在独立的线程当中,不会互相影响。
Applications层:即应用层,应用层和用户是密切相关的,Android手机上丰富多彩的App即是在应用层开发出来的,开发者利用Java语言进行编写,利用SDK编写自己的程序,进而这些程序才能丰富地呈现在用户的面前。
2.2 Android的四大组件:
Activity :
在Android应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示布局控件并能绑定监听器对相应事件作出响应。
Activity之间是通过Intent进行通信的。Intent相当于连接两个Activity的桥梁。在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。Intent有显示Intent和隐示Intent之分,显示Intent通过startActivity()方法连接两个Activity,而隐示Intent主要对应IntentFilter标签下的name,根据这个指定Intent。
Activity拥有比较完整的生命周期,在Android操作系统中,Activity算是一个比较重量级的组件了,比起类似功能的fragment,它启动的时间可能要更长一点。另外,Activity之间的切换可以从一个程序的内部进行切换,也可以从两个不同程序之间进行切换。
Activity也可以传递参数,一般是用Bundle类绑定数据,在另一个Activity中解绑定即可。如果要返回数据到前一个Activity,这时候就要用startActivityForResult()方法取代startActivity()方法,这样在另一个Activity返回到前一个Activity的时候,前一个Activity的数据保持不变。
BroadcastReceive广播接收器:
BroadcastReceive广播接收器主要是用于侦听广播事件的,比如在运行Activity的时候突然接到电话或者收到短信,这时要通知活动如何去处理,一般BroadcastReceive也是有固定生命周期的,它的生命周期和Service类似,从onCreate()到onDestroy()这一过程就是它的生命周期。
一般我们用Broadcast广播事件来接收事件广播和系统广播。事件广播的使用方法很简单,只需要用到sendBroadcast方法,其传递的参数是一个Intent,而Intent是可以传递一些简单数据的,如果不需要用到Bundle,直接调用putExtra方法即可。接收事件需要继承类BroadcastReceiver,在onReceive方法中接收到Intent,然后得到传递的数据信息。而发送系统广播消息要稍微复杂一些,首先要在Xml文件中去声明receiver,补全它的name等属性。然后系统广播消息一般由系统发出,我们需要定义一个类去接收它,如短息,电话等的呼入事件,是系统广播消息。定义的类也同样要继承自BroadcastReceiver,同时我们也需要在代码中去手动注册Receiver。广播类型一般分为普通广播,有序广播,异步广播,在这里不作详细阐述。
Service 服务:
Service与BroadcastReceive一样,没有用户界面,一般放在后台运行,处理一些耗时的工作,这样用户体验较好。
Service的应用例子有很多,一般用在网络通信和本地音乐播放上面。比如在一个媒体播放器的应用中,会有很多Activity,包括选择歌曲,查看排行榜,收藏页面,播放歌曲等等。但是当我们从一个Activity切换到另一个Activity的时候,音乐应该还是要保持播放状态的,不然就太影响用户体验了,音乐播放停止应该由用户手动控制,所以就不能在Activity中设置音乐播放状态了。在这个例子中,媒体播放器这个Activity 可以使用Context.startService()来启动一个Service,在Service中写上音乐播放的代码。因为启动了startService()这个方法,所以这个服务会一直在后台保持运行,Service结束的时机应该是按了结束按钮调用了stopService()方法。另外,如果想在退出程序的时候音乐也随之停止,就要在主Activity中使用bindService()方法绑定到一个Service 上。当成功连接到一个Service之后,Service会向启动它的Activity返回一个连接是否成功的方法,主Activity可以用这个方法和Service保持联系。 基于Android的手机信息查询助手中软件查询信息模块设计(3):http://www.751com.cn/jisuanji/lunwen_20597.html