【Android开发教程】一、基础概念
Android操作系统
Android是一个基于Linux、使用java作为程序接口的操作系统。他提供了一些工具,比如编译器、调试器、还有他自己的仿真器(DVM — Dalvik Virtual Machine)。Android是由google领导的Open Handset Alliance开发的。
Android使用的虚拟机比较特别。Dalvik使用了一些特别的方法。你在Android上不能运行普通的Java程序。Android提供了一个dx的工具,可以把普通的Java类文件转换为dex(Dalvik Executable)文件。Android程序最后通过aapt(Android Asset Packaging Tool)程序来打包成一个.apk文件。Eclipse下面的ADT可以自动将class转换为dex,然后在发布的时候打包成apk文件。
Android支持2D和3D的openGL图形库,支持SQLite数据库。
每一个Android程序都运行在Android系统分配的一个独立的空间内,所以每个程序都不会影响和破坏到其他的程序,这是很安全的。
一些重要的Android组件
一个Android程序由下面这些部分组成。
- Activity:代表了Android程序的展现层,比如用户看到的界面。一个Android程序会有一些个Activities,在程序运行过程中也会切换。
- Views:一个Activities的用户界面是继承自android.view.View。views的布局通过android.view.ViewGroups来管理。
- Services:不需要UI展现的后台任务。可以通过android的提醒框架给用户提示。
- Content Provider:为程序提供数据,通过Content Provider你的程序可以与别的程序共享数据。Android的SQLite数据库可以看做一个Content Provider。
- Intents:是一个异步的消息系统,可以从别的系统或服务获取数据。程序可以直接调用一个服务或者activity,也可以请求android系统。
- Broadcast Receiver:接受系统消息或者隐含的intent,可以根据系统的改变做出反应。一个程序可以注册成为某些事件的Broadcast Receiver,当事件发生时,程序就执行。
安全和许可
Android对一些任务有特别的许可。例如一个程序需要使用Internet,那么就需要在他的配置文件中获取相应的许可。在安装过程中,用户可以确认这个程序是否取得相应的许可。
AndroidManifest.xml
每一个Android程序都通过AndroidMainfest.xml来描述。这个文件中必须声明所有的activity、services、broadcast receiver、以及Content provider。也需要包含程序需要的许可。例如,如果程序需要访问网络,就必须声明。“AndrManifest.xml”可以认为是Android程序的部署声明。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rockux"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Convert"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
package属性定义基础库。他必须是唯一的。所以比较好的处理办法就是使用你自己的域名的倒序,防止冲突。
“android:versionName” 和”android:versionCode”用来表明你的程序的版本。versionName可以是任意的字符串用来给用户看的,versionCode必须是整数,这是菜市场用来判断你的程序是否更新的一个标志。通常从1开始,然后发布一个新版本就+1。
“activity”定义了这个类下面的动作。
“uses-sdk”属性用来确定你的程序需要的SDK的最低版本,防止你的程序被安装在不被支持的SDK上。
R.java Resources 以及Assets
Android项目中的gen目录包含一些生成的文件。生成的“R.java”包含了项目中的res文件中的资源文件。这些资源部署在res文件夹的可以是菜单、布局图标、图片、动画等等。例如,一个资源文件可以是一个图片或者一些包含了某些字符串的XML文件。
如果你创建了一个新的资源,那么他就自动创建在R.java中。他的引用是一个整型值,Android系统有一些方法可以访问到这个资源。比如可以通过getString(R.string.yourString)来访问你的字符资源的引用,但是最好不要去改动R.java。
assets中可以存放任何类型的数据,在java中你可以通过AssetsManager以及getAssets()方法来访问。
动作(activities)和布局(layout)
动作的用户界面通过布局来确定。layout是android.view.ViewGroups的一个实例。layout定义了UI元素,他们的属性以及摆放位置。UI元素基于android.view.View。
布局可以通过java代码或者xml文件来定义。在你不知道内容的时候可以使用java代码布局,比如你的内容是从网上获取到的数据。
基于XML的布局定义在/res/layout中。这些文件描述了视图组、视图、以及他们的关系和具体的属性。如果一个UI元素需要通过java代码访问,那么你就需要通过android.id来赋予这个元素一个唯一的id。
通过XML定义布局是比较推荐的一种方式,可以将视图和程序的逻辑分离,比较好管理一些。
动作(activities)和生命周期(lifecycle)
操作系统控制着程序的生命周期。操作系统可以在任何时候中断程序,比如有来电了。Android对于动作有一些预先定义的关于生命周期的方法,比较重要的是:
- onSaveInstanceState():如果动作停止就会调用。用来存储数据,好让重新启动的时候恢复到原来的状态。
- onPause():在动作结束的时候触发,用来释放资源和存储数据。
- onResume():在动作重启的时候触发,用来初始化程序
上下文
android.context.Context类提供了与系统通信的方法。他是程序的全局信息的一个接口。Contexts提供了getSystemService方法可以用来接收不同硬件的消息。作为动作和服务,你可以直接通过this来访问。
转载请注明:
作者:RockUX–WEB前端
出自:【Android开发教程】一、基础概念
转载于:https://www.cnblogs.com/waw/archive/2011/09/02/2164440.html
【Android开发教程】一、基础概念相关推荐
- Android开发教程JAVA基础(汇总)
Android游戏开发视频教程(汇总) Android开发教程JAVA基础之Java 概述 Android开发教程JAVA基础之标示符.关键字1 Android开发教程JAVA基础之标示符.关键字2 ...
- “.NET研究”【Android开发教程】一、基础概念
Android操作系统 Android是一个基于Linux.使用java作为程序接口的操作系统.他提供了一些工具,比如编译器.调试器.还有他自己的仿真器(DVM - Dalvik Virtual Ma ...
- iPhone开发教程 UI基础课程(58课时)
qianqianlianmeng iPhone开发教程 UI基础课程(58课时) 第一章 iPhone开发入门 UI基础课程 第一章 iPhone开发入门 1.1 iOS概述和架构 ...
- android开发教程(一)——目录
本教程中使用的环境: windows平台: c:\>winver linux平台: k@k-C410:/$ lsb_release -a No LSB modules are available ...
- 做了一个系列的Android开发教程列表
做了一个系列的Android开发教程列表.花了半天多的专题 里面包含了 4个系列的教程. 也包含了很多Android开发资料. 喜欢的人可以收藏哦:http://dev.apkbus.com/
- Android开发教程之--sql语句一、创建/删除表Stringsql=Createtable
Android开发教程之--sql语句 一.创建/删除表 String sql="Create table "+TABLE_NAME+"("+FIELD_ID+ ...
- Unity3D For Android 开发教程【转http://game.ceeger.com/Unity/Doc/2011/Unity3D_For_Android.html】...
Unity3D For Android 开发教程 Date:2011-08-01 04:33 我自认为抵挡诱惑的能力还是很强大的,关键的时候还能把持住自己.今天逛了一下南京的丹凤街,终于受不住Andr ...
- android开发教程21篇(强烈推荐,几乎每一篇都是精华教程)
qianqianlianmeng android开发教程21篇(强烈推荐,几乎每一篇都是精华教程) 推荐hellogv 的二十一篇android开发教程,说句真心话,几乎是每一篇都是精华,值得很多开发 ...
- STM32Cube高效开发教程(基础篇)
第一本全面使用STM32CubeMX和STM32CubeIDE作为开发软件,系统性地介绍STM32的HAL库开发的书. STM32Cube高效开发教程(基础篇)详细目录 <STM32Cube高效 ...
最新文章
- php数据库字段类型,mysql 字段类型说明
- Java算法(两数之和)
- 【渝粤题库】陕西师范大学200831 编译原理 作业
- 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写
- JVM系列(三)— Java内存模型
- Spring:自动装配模式
- c语言推箱子源代码及注释,求大神 解析推箱子源代码 要详细
- deepin开机未登录自动连接wifi
- 登峰连接程式改坐标软件_如何用SOLIDWORKS方程式驱动圆柱波浪线?
- Java基础学习笔记二十四 MySQL安装图解
- 注册电气工程师考试考取事宜与考试大纲
- adobe illustrator 菜单中英文对照
- SPSS对数据进行相关性和显著性分析
- 【那些年,我们一起追的女孩】第十四章
- 英文构词法 —— circum- 前缀
- KubeSphere安装redis集群,全程超带劲
- html调用一言api,一言-纯净API
- 来自原CSDN排名第一博主:成功的背后!(给所有IT人)
- 怎么保护MacBook的电池?Mac电池最大充电限制工具AlDente Pro来帮您
- ubuntu找不到ens33问题排查