Android介绍
16lz
2021-12-04
Android介绍 背景 在十一月初,Google联合34家企业成立了开放手机联盟(Open Handset Alliance)。同时,该联盟面向全球推出基于 Linux的手机操作系统“Android”,该平台是完全意义上的开放性、综合性的移动设备平台。 What is Android? Aandroid是包括基于移动设备上的操作系统、中间件、关键应用的一组软件。而Android SDK提供了在Android平台上开发的必要的工具和APIs,该平台是基于Java语言开发的。 Android的SDK的下载和安装 平台简介 这个平台有以下功能: Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。 Dalvik virtul machine: 一个基于 Linux 的虚拟机。 Integrated browser: 一个基于开源的 WebKit 引擎的浏览器,在应用程序层。 Optimized graphics: 包含一个自定义的 2D 图形库和基于 OpenGL ES 1.0 标准的 3D 实现。 SQLite: 数据库 Media support: 通用的音频,视频和对各种图片格式的支持 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM Telephony: GSM 移动网络 , 硬件支持。 Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。 Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。 Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了 Eclipse 的插件。 开发环境简介 先介绍一下开发环境,下面是对系统及相关软件的版本要求: 操作系统: Windows XP or Vista Mac OS X 10.4.8 or later (x86 only) Linux (tested on Linux Ubuntu Dapper Drake) Supported Development Environments Eclipse: Eclipse 3.2, 3.3 (Europa) Android Development Tools plugin (optional) Other development environments or IDEs JDK 5 or JDK 6 (JRE alone is not sufficient) Not compatible with Gnu Compiler for Java (gcj) Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows SDK下载和安装 1.的下载地址是:http://code.google.com/android/download.htmlAndroid SDK 2.将下载后的SDK的压缩包解压到适当的位置就可以了。 3.下一步设置$SDK_ROOT/tools在你的机器的环境变量中。 现在,你可以使用运行命令:emulator.exe -skin QVGA-P启动Android的模拟器了。 下面介绍Eclipse插件ADT的安装和使用: 1.启动Eclipse,然后选择 Help > Software Updates > Find and Install... . 2.在resulting daialog box中,键入一个新的名称(比如:Android Plugin),然后输入它的URL: https://dl-ssl.google.com/android/eclipse/ 3.然后点击完成 安装Android Plug完成后,重启Eclipse 1.选择 Window > Preferences... ,打开 Preferences panel 2.选择 Android 项 3.在SDK Location项中,点击Browser…,然后选择SDK的的根目录即可(注意:不要选择tool目录) 这一切安装完毕之后,我们可以在Project中新建一个Android的工程了。下面是一个利用ADT创建一个Hello World的例子。 Hello,World程序演示 1 , 创建一个新的 Android 项目 启动 Eclipse, 选择 File -> New -> Project 菜单 , 如果你安装好了 Android 的 Eclipse 插件,你将会在弹出的对话框中看到 "Android Project" 的选项。 选择 “Android Project”, 点击 Next 按钮。 2, 填写项目的细节参数 . 下面的对话框需要你输入与项目有关的参数: 这个表格中详细介绍了每个参数的含义 : Project Name: 包含这个项目的文件夹的名称。 Package Name: 包名,遵循 JAVA 规范,用包名来区分不同的类是很重要的,例子中用到的是 "com.google.android", 你应该按照你的计划起一个有别于这个的路径的名称。 Activity Name: 这是项目的主类名,这个类将会是 Android 的 Activity 类的子类。一个 Activity 类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。 Application Name: 一个易读的标题在你的应用程序上。 在 " 选择栏 " 的 "Use default location" 选项,允许你选择一个已存在的项目。 3,编辑自动生成的代码。 当项目创建后,你刚才创建的 HelloAndroid 就会是包含下面的代码 . public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); } } 当一个项目建立好以后,最直接的效果,就是在屏幕上显示一些文本,下面是完成后的代码 : public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } } 程序代码已经写好,下面运行一下: 最简便的运行方式是:右击你的Android工程,然后选择Run As ->Android Application,即可运行了 Android应用程序解析 在Android应用程序中有四个构建模块: Activity(活动) Intent Receiver(意图接受器/活动接受器) Service(服务) Content Provider(内容提供器) Android应用程序的四种构建介绍 并不是每个程序都需要所有的四个部分,你的程序可能用到它们其中一些的组合。 一旦你决定在你的程序中需要哪个组件,你应该在一个叫 AndroidManifest.xml 的文件中列出它们。你在这个 XML 文件中声明程序中用到的组件和它们的用途和需要。 u Activity Activity 是 Android 构造块中最基本的一种,在应用中,一个 activity 通常就是一个单独的屏幕。每一个 activity 都被实现为一个独立的类,并且继承于 Activity 这个基类。这个 activity 类将会显示由几个 Views 控件组成的用户接口,并对事件做出响应。大部份的应用都会包含多个的屏幕。例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕,就是一个 activity 。从一个屏幕导航到另一个屏幕是很简单的。在一些应用中,一个屏幕甚至会返回值给前一个屏幕。当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈中删除。默认情况下, Android 将会保留从主屏幕到每一个应用的运行屏幕。 Android 使用了 Intent 这个特殊类,实现在屏幕与屏幕之间移动。 Intent 类用于描述一个应用想要做什么事。 一个屏幕到另一个屏幕之间的导航是通过解析意图( Intent )来实现的。当向前导航时, activity 将会调用 startActivity (Intent myIntent) 方法。然后,系统会在所有安装的应用程序中定义的 IntentFilter 中查找,找到最匹配 myIntent 的 Intent 对应的 activity 。新的 activity 接收到 myIntent 的通知后,开始运行。当 startActivity 方法被调用将触发解析 myIntent 的动作,这个机制提供了两个关键好处: l Activity 能够简单的通过在 Intent 表中发送请求,从其他组件中复用功能 l Activity 能够在任何时候由一个带有相同 IntentFilter 的 Activity 替换 u Intent Revicer 当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你可以使用一个 Intent Receiver 。虽然 Intent Receiver 在感兴趣的事件发生时,会使用 NotificationManager 通知用户,但它并不能生成一个 UI 。 u Service 一个 Service 是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个 activity ,让使用者可以选择歌曲并播放歌曲。 u Content Provider 应用程序能够将它们的数据保存到文件中、 SQL 数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时, Content Provider 将会很有用。一个 Content Provider 类实现了一组标准的方法,从而能够让其它的应用保存或读取此 Content Provider 处理的各种数据类型。 Android应用程序中几种配置文件介绍 在Android的应用程序中,有res的文件夹,这里面包含着layout和 values这两类的xml配置文件。 lLayout顾名思义,就是作为布局使用的定义文件,其中包含了默认的启示项。所有的Android布局文件必须以XML头为开始:<?sml version="1.0" encoding="utf-8"?> 。同样,下一条定义通常(但不完全)是一个某种类的布局定义,在这个例子中是LinearLayout,也就是水平布局的意思。Android的XML名字空间应该总是定义在xml文件中组件或布局的最上级,这样标签"android:"才能用在文件的其余部分: xmlns:android=" http://schemas.android.com/apk/res/android" 更加详尽的布局定义,建议参考Android文档的 《 Designing Your Screen in XML 》部分。 lValues部分定义的是应用程序中的资源,诸如颜色配置、数组定义、风格样式等等。这里有String.xml,我们可以为应用程序添加所需的字符串资源。例如:<string name="confirm">Confirm</string>这个资源,我们可以在定义UI的布局定义中使用到它。例如: <Button id="@+id/confirm" android:text="@string/confirm" android:layout_width="wrap_content" android:layout_height="wrap_content" /> l最后,讲一下AndroidManifest.xml文件。AndroidManifest.xml 是让Android系统理解你的应用的一种方式.这个文件定义了应用的种类、在启动和设置时在哪显示它(或者是否显示)、应用定义了哪些活动、服务和内容提供者、它能接收哪些Intent,等等。在新的活动能被Android系统识别前,它需要在AndroidManifest.xml 文件中有它自己的活动条目。这让系统知道它的存在并且能被调用。例如:<activity class=".NoteEdit"/> 更为详尽的介绍请参见文档的《The AndroidManifest.xml》部分。 程序演示 Android应用程序的生命周期 在多数情况下,每个 Android 应用运行在自己的 Linux 进程中。当一个应用的某段 code 需要运行的时候这个进程将会被创建,直到不再需要该应用或系统要为其他的应用释放内存的时候才停止。 一个非常重要且少有的特性是,应用进程的存活时间不是由这个应用直接控制的。而是由系统决定的,系统会根据每个已知的正在运行的应用情况来定夺,包括,该应用对用户的重要性和系统全部可用内存。 为了决定在内存较低的时候杀掉哪个进程, Android 会根据运行在这些进程内的组件及他们的状态把进程划分成一个 " 重要程度层次 " 。其重要的程度按以下规则排序: 前端进程 可以是一个持有运行在屏幕最前端并与用户交互的 Activity 的进程 (onResume 方法被调用时 ) ,也可以是持有一个正在运行的 IntentReceiver( 也就是说他正在执行自己的 onReceiveIntent 方法 ) 的进程。在系统中,只会有少数这样的进程,并且除非内存已经低到不够这些进程运行,否则系统不会主动杀掉这些进程。这时,设备通常已经达到了需要内存整理的状态,所以杀掉这些进程是为了不让用户界面停止响应。 可视进程 是持有一个被用户可见,但没有显示在最前端 (onPause 方法被调用时 ) 的 Activity 的进程。举例来说,这种进程通常出现在一个前端 Activity 以一个对话框出现并保持前一个 Activity 可见时。这种进程被系统认为是极其重要的,并且通常不会被杀掉,除非为了保持所有前端进程正常运行不得不杀掉这些可见进程。 服务进程 是持有一个 Service 的进程,该 Service 是由 startService() 方法启动的,尽管这些进程用户不能直接看到,但是通常他们做的工作用户是十分关注的 ( 例如,在后台播放 mp3 或是在后台下载、上传文件 ) ,所以,除非为了保持所有的前端进程和可视进程正常运行外,系统是不会杀掉服务进程的。 后台进程 是持有一个不再被用户可见的 Activity(onStop() 方法被调用时 ) 的进程。这些进程不会直接影响用户体验。加入这些进程已经完整的,正确的完成了自己的生命周期 ( 访问 Activity 查看更多细节 ) ,系统会在为前三种进程释放内存时随时杀掉这些后台进程。 空进程 是没有持有任何活动应用组件的进程。保留这种进程的唯一理由是为了提供一种缓存机制,缩短他的应用下次运行时的启动时间。 最后说一下Activity的生命周期。一个Activity是有生命周期的,从onCreate()开始,onDestroty()结束,中间还有onStart(),onResum(),onStop(),onRestart()等等状态。有一个详细的介绍图片:
更多相关文章
- Android版本演进史
- Android(安卓)经典资料分享大家一起顶
- 【Android(安卓)应用开发】Android资源文件 - 使用资源存储字符
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程
- android 是什么
- 命令行下Android应用开发
- 最近整理的Android学习笔记
- android的PowerManager和PowerManager.WakeLock
- 理解Android(安卓)上的安全性