android开发过程简介


1 Android系统架构
Linux为android提供了硬件抽象层,可以把android移植到更多的平台上。Linux为其完成内存管理、进程管理、网络和其他操作系统服务工作。
程序不会直接进行Linux调用。

1.1 系统架构基本内容
整个架构大概分4层:应用程序层、应用程序框架、库和Linux内核层。
应用程序层包括:主程序、联系人、电话、浏览器和其他应用程序。
应用程序框架层包括:活动管理层、窗口管理层、内容提供者、视图系统、通知管理器、软件包管理器、电话管理器、资源管理器、位置管理器和传感器管理器。
库:界面管理器、媒体框架、SQLite、OpenGL ES、FreeType、WebKit、SGL、SSL、libc,另外还有android运行时:包括核心库与Dalvik虚拟机。

Linux内核层:显示驱动程序、蓝牙驱动程序、相机驱动程序、闪存卡驱动程序、Binder(IPC)驱动程序、键盘驱动程序、USB驱动程序、WiFi驱动程序、音频驱动程序和电源管理等。
开发中某些程序要和Linux打交道,adb shell命令打开一个Linux命令行窗口,可以与linux交互。

1.2 本机库简介
Linux内核层上面的一层中包含了android的本机库。这些共享库是用C或C++语言编写的,并且针对电话使用的特定硬件架构进行了,并已由手机制造商预先安装到手机中。

重要的5个库:
界面管理器:Surface Manager,android使用与vista和compiz类似的组合窗口管理器,但是更简单一些。不是讲显示内容直接绘制到屏幕缓冲区中,而是将绘制命令传递给屏幕外的位图,然后将该位图与其他位图组合起来,形成用户看到的显示内容。这种方法允许系统实现所有有趣的效果,如透明的窗口和奇特的国度效果。
2D和3D图形:使用android时,二维和三维元素可结合到一个用户界面中,库将使用3D硬件或快速软件渲染器。
媒体解码器:android可播放视频内容,可用各种格式录制和播放音频,这些格式包括AAC、AVC(H.246)、H.263、MP3和MPEG-4.
SQL数据库:android提供了轻量级的SQLite数据库引擎,Firefox和苹果的iPhone中使用的也是该引擎。使用该引擎可在应用程序中持续存储。
浏览器引擎:为保证快速显示HTML内容,android使用了WebKit库。Google Chrome浏览器、苹果的Safari浏览器、苹果iPhone和诺基亚的S60平台都使用了该引擎。

1.3 Android运行时
在linux内核层上面还有一个android运行时层,该层包括Dalvik虚拟机和核心库。
Dalvik虚拟机是Google的实现,专门针对移动设备进行了优化。为android编写的所有代码使用的都是语言,这些代码在虚拟机中运行。
Davlvik与传统虚拟机的不同之处体现在:
Dalvik VM运行.dex文件,即时会将标准的.class和.jar文件转换为.dex文件。
.dex文件比类文件更加紧凑并且更加高效,这是针对运行android的设备内存有限且通过电池供电的特点所作出的重要改进。
Android附带的核心库与java SE库和java me库不同。但是,他们之间有很大一部分还是相同的。

Dalvik是google公司的Dan bornstein设计并编写的虚拟机,是一个针对低内存耗用而优化的java虚拟机。
允许同时允许多个VM实例,并且能够充分利用底层操作系统实现安全性和进程隔离。

1.4 应用程序框架
位于本机类库和运行时上面的是应用程序框架层。提供了在创建应用程序是需要使用的各种高级构建快。
该框架已随android一同安装,但开发人员也可以根据需要使用自己的组件扩展该框架。

重要的5个部分:
活动管理器:控制应程序的生命周期,同时维护一个公共的后退栈供用户导航。
内容提供者:用来封装需要在应用程序之间共享的数据,如联系人信息。
资源管理器:程序中涉及的任何非代码内容。
位置管理器:android手机始终知道目前所处的位置。
通知管理器:像收到短信、临近预约时间、临界状态报警、入侵等事件以友好的方式通知用户。
Android独特且强大的特性之一,就是所有应用程序一律平等。系统级应用程序使用的公共API与你的应用程序使用的完全相同。
如果需要,可以让android使用你的应用程序代替标准的应用程序。

1.5 应用程序
最高层的是应用程序层。好比浮出海面的android冰山的一角。最终用户看到的是这些应用程序,根本不会察觉在该层下面执行的操作。
手机刚购买时,会预装一些标准的系统应用程序,包括:
电话拨号程序;
电子邮件收发程序;
联系人管理程序;
Web浏览器;
Android market;

1.6 Android程序的生命周期
Android中有一个前台应用程序,通常占据除状态栏以外的所有屏幕空间。用户开机时,他们看到的第一个应用程序是Home应用程序。
这个程序会显示时间、背景图像,及一个滚动列表,其中包括用户可以打开的其他应用程序。
用户在运行应用程序时,android会启动该程序并将其置于前台,用户可以从应用程序中打开其他应用程序,或者打开同一应用程序的其他窗口,
然后再调用其他应用程序或打开其他窗口。所有这些程序和窗口都被系统的活动管理器记录在应用程序栈中。
用户可以随时按Back按钮返回到栈中的上一个窗口,从用户的角度看,这种工作方式类似于Web浏览器中的历史功能,即按Back返回上一个页面。
从内部来看,每个用户界面窗口都是通过一个Activity类表示的,而每个活动都有其自己的生命周期。
一个应用程序就是一个或多个活动加上包含这些活动的Linux进程。

在android中,即使所在进程被杀死(结束),相应的应用程序仍然还是活着的。即活动的生命周期与进程的生命周期没有关系。
进程只是各种活动可随意使用的一个容器。

Android程序中的每个活动在其存在期间都会处于以下多种状态之一。开发人员不能控制程序处于哪个状态,这是由系统管理的。
但是通过onXXX()方法调用改变状态时,系统会通知开发人员。

开发者需要在Activity类中重写这些方法,而android会在合适的时间调用下面这些方法。
onCreate(Bundle)。首次启动活动时会调用该方法。可使用该方法执行一次性的初始化工作,如创建用户界面。
onCreate()接受一个参数,可以是null或由onSaveInstanceState()方法以前保存的某些状态信息。
onStart()。该方法说明将要显示给用户的活动。
onResume()。用户可以开始与活动进行交互时会调用该方法。这个方法非常适合开始播放动画和音乐。
onPause()。活动将要进入后台时会运行该方法,活动进入后台的原因通常是在前台启动了另一个互动。还应该在方法中保存程序的持久性状态,如正在编辑的记录。
onRestart()。如果调用该方法,则表明要将已处于停止状态的活动重新显示给用户。
onDestroy()。销毁活动前会调用该方法。如果内存不足,可能不会调用onDestroy(),而只是系统终止进程。
onSaveInstanceState(Bundle)。Android调用该方法的作用是让活动可以保持每个实例的状态,如光标在文本字段中位置。
通常无需重新这个方法,因为默认的实现会自动保持所有用户界面控件的状态。
*翻盖动作: 一次方向变化(纵向、横向切换)会让系统经历以下过程:保存实例的状态、暂停、停止、销毁,然后使用已保存的状态创建新的活动实例。
例如,在t-mobile g1 手机上,翻动键盘上的手机盖就会触发上述过程。在android模拟器上,按Ctrl+F11或小键盘上的7或9键也会触发上述过程。

1.7 构建快
Android sdk中定义的较为重要的对象是活动、意图、服务和内容提供者。
活动,一个活动就是一个用户界面屏幕。应用程序可定义一个或多个活动,以处理程序不同阶段中的任务。
意图,是描述具体动作的机制,例如”拍照”、”往家中拨电话”或”打开舱门”。

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《android开发过程简介
本文地址:https://www.zhiletu.com/archives-435.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微