现在的位置: 首页 > 综合 > 正文

Android基础

2013年05月17日 ⁄ 综合 ⁄ 共 6529字 ⁄ 字号 评论关闭

 

1.AndroidGoogle公司发布的一款基于Linux内核,使用java语言编写应用程序的手机操作系统,现在和苹果公司的IOS、诺基亚公司的Symbian、以及诺基亚和英特尔联合推出的的Meego手机操作系统共同成为如今最流行的手机操作系统。

2.Android开发的环境准备:

(1).GoogleAndroid官方网站下载最新的Android开发包SDK,将其解压到目标路径。

(2).Eclipse中安装Android开发插件ADT(可以使用在线安装方式,也可以从Google官方下载后解压到EclipseplugIn目录下)

(3).Eclipse中指定AndroidSDK路径,至此开发环境搭建完毕,可以使用Eclipse开发Android应用。

3.Android应用程序的4个组成部分(基本构造块)

(1).Activity:活动,Android应用程序的基本功能单位,相当于一个界面应用程序,系统使用Activity堆栈来管理。

(2).Intent:用于从一个Activity/界面到另一个Activity/界面的切换跳转,当外部事件触发时执行的代码,如电话振铃等,通常没有用户界面,可能使用通知单。

Intent数据结构中两个重要的部分:

a.动作(action):主要内容有MAIN(程序进入点)ViewPICKEDIT等操作。

b.数据(data):动作的目标或者动作的结果,用URI形式表示。

(3).Service:在后台运行的应用程序,它可以运行在它自己的进程,也可以运行在其他应用程序的进程上下文(context)中。其他组件可以绑定到一个服务上面,通过远程过程调用(RPC)来调用这个方法。

(4).Content Provider:用于和其他应用程序共享数据。

4.Activity的主要方法和状态:

当创建一个Android
Activity
时,有以下两个重要方法需要实现:

(1).onCreate(Bundle bundle):初始化Activity,设置用户界面UI等。

(2).onPause():当一个Activity停止或者结束的处理。

Activity的四个状态:

(1).active/running.

(2).paused.

(3).stopped.

(4).killed/shut down.

5.使用BundleActivity间传递数据:

BundleAndroid中的一种数据结构,类似于Java中的Map。使用Bundle存取数据时必须将Bundle存放在一个Intent中,Bundle的使用方法如下:

(1).使用Bundle存数据:

 

(2).使用Bundle取数据:

 

6. Android程序中的两种Intent

(1).Activity Action Intents:调用程序之外Activitiesintent,只有一个Activity可以处理这种Intent,如打开浏览器。

(2).Broadcast Intents:发送给多个Activity处理的Intent

7.直接Intent和间接Intent

(1).直接Intent:指定了component属性的Intent,通过指定具体的组件类,通知应用程序启动对应的组件。

使用setComponent(组件名);或者setClass(context, class)方法来指定Intent的组件属性。

(2).间接Intent:没有指定component属性的Intent,系统根据查找以注册在Android Manifest.xml清单文件中所有的IntentFilter及其中定义的Intent来找到匹配的Intent

8.Intent的属性:

Intent解析主要依赖Intentaction(动作)type(类型)category(类别)这三个属性来进行判断:

(1).actionIntent要执行的动作。

(2).typeIntent的数据类型。

(3).category:被执行动作的附加信息。

(4).extras:附加信息,用于IntentActivity之间传递数据。

9. Intent ReceiverIntent Filter

(1).Intent Receiver用于处理外部事件:

Android应用程序需要对外部事件处理时,需要使用Broadcast Intent
Receiver
,需要在AndroidMainfest.xml清单文件中声明,或者使用context.registerReceiver()来注册Intent Receiver。程序并不会因为BroadcastReceiver被呼叫而被执行,而是当BroadcastReceiver被触发时系统会依据需求来执行相应的程序。

程序可以使用context.sendBroadcast()来发出自己的Intent Broadcast给其他程序。

(2). Intent Filter用于描述Activity

Intent 要求做某些事情时Intent Filter被用来描述该Activity能够接收什么样的IntentIntent
Filter
都会在AndroidMainfest.xml清单文件中声明。

10.Resolving Intent

Android应用程序的画面切换是由resolving intent来实现的,正在运行的Activity可以使用start Activity(myContext)来实现启动另一个Activity。使用Resolving Intent的两个好处:

(1).Activities可以很容易利用Intent方式去使用别的程序功能。

(2).Activities可以很容易的在任何情况下由新的Activities所取代。

11.Service的使用:

(1).方法1

a. 启动服务:context.StartService();可以传递参数。

b. 结束服务:context.stopService();

(2).方法2

a.启动服务:context.bindService();

b.结束服务:context.unbindService();

注意:两种方法可以混合使用。

12.两种Service使用方法的区别:

(1).使用startService()启动服务后,即使调用启动服务的进程结束了,服务仍然存在,直到有进程调用stopService停止服务,或者服务自己自杀(service.stopSelf())

(2).使用bindService()启动服务后,服务就和调用bindService()的进程同生共死了,当调用bindService()的进程结束了,服务也就跟着结束了,期间也可以调用unbindService()结束服务。

(3).当两种方式混合使用时,比如通过startService()启动服务后,又使用了bindService(),那么只有同时使用stopService()unbindService()才能结束该服务。

13.Service的进程特性:

(1).Android系统会尝试保留那些启动了或者绑定了服务的进程。

(2).如果服务在进程的onCreate()onStart(),或者onDestory()方法中执行时,那么主进程将会变成一个前台进程,以确保此代码不会被停止。

(3).如果服务以及开始,那么它的主进程会就重要性而言低于所有看见进程但高于不可见进程。

(4).如果多个客户端绑定了服务,只要有一个客户端对于用户是可见的,即认为该服务是可见的。

14.Android的重要进程:

(1).前台进程:当前用户活动需要的,如在屏幕上运行的活动。

(2).可视化进程:活动是可觉察的,但是不是在前台,如暂停,如在前台对话框之后的以前活动。

(3).服务进程:处理一项服务,不直接可视(可觉察)

(4).后台进程:处理当前不可觉察活动,如停止。可在回收内存的任何时候结束。

(5).空进程:处理没活动的应用程序组件。

15.Android应用程序生命周期:

(1).每个Android程序运行在它自己的Linux内核之上。

(2).程序不直接控制进程的生命周期。

(3).程序的生命周期由系统决定,取决于正在运行程序的重要性、可用内存等。

(4).Android应用程序组件对应用程序进程有影响。

16.Android程序的重要文件:

(1).java file:主要是应用程序逻辑。

(2).XML file:主要用于用户界面布局。

Android程序使用MVC模式,布局文件为ViewActivitycontroller

17.Android常用布局对象:

Androidviewsviewgroups是应用程序用户界面的基本单位。Android应用程序界面常用有以下5种布局管理器

(1).FrameLayou:帧布局管理器,最简单的布局管理器,指定一个空白区域在屏幕上,稍后可以填充一个对象,所有的子元素都放在屏幕的左上角,不能为子元素指定位置。

(2).LinearLayout:线性布局管理器,所有子元素水平或者垂直排列。

a.垂直列表:每行只有一个元素(垂直只有一列)

b.水平列表:每列只有一个元素(水平只有一行)

(3).TableLayout:表格布局管理器,列和行不显示边框线,单元格也不显示边框线,单元格不能跨列。

(4).AbsoluteLayout:绝对布局管理器,子元素可以指定显示在屏幕上的xy坐标,圆点(0,0)为屏幕的左上角。不推荐使用,因为不同手机的屏幕大小不一致,因此在不同尺寸屏幕上应用程序的界面会不一致。

(5).RelativeLayout:相对布局管理器,可以指定子元素在屏幕上的相对位置。

18.Android应用程序读写文件:

Androidjava中的IO做了简化操作,文件读写操作更简单。

(1).读取文件:

使用context.openFileInput(String
name);
可以打开一个文件输入流,如果文件不存在则会抛出异常。

如:

 

(2).写文件:

使用context.openFileOutput(String
name, int mode);
可以打开一个文件输出流,如果文件不存在则创建一个空文件。

如:

 

注意:int型参数Mode是指定写文件的方式,如追加方式,或者是从头写起。Android提供了枚举类型,可以查看相关的API文档。

19.Android读取静态资源文件:

Android程序中,静态资源文件必须放在“/res/raw”目录下,使用Resource.openRawResource(R.raw.静态资源文件名);可以打开一个输入流。

如:

 

20.AndroidSQLite数据库:

SQLite是一个轻量级的嵌入式数据库,存在Android的运行时环境的依赖包中。

SQLite的常用操作如下:

(1).创建数据库:

使用context.createDatabase(String
name, int version, int mode, cursorFactory factory);
创建一个数据库,并返回一个SQLiteDatabase对象,name参数是存放数据库文件名,后面的参数是可变参数。

如:

 

(2).打开数据库:

使用context.openDatabase(String
name, int version, int mode, cursorFactory factory);
创建一个数据库,并返回一个SQLiteDatabase对象,name参数是要打开的数据库文件名,后面的参数是可变参数,如果该文件不存在则会抛出异常。

如:

 

(3).删除数据库:

使用context.deleteDatabase(String
name);
删除一个数据库,并返回一个boolean值,name参数是要删除的数据库文件名。

如:

 

(4). SQLite的非查询SQL语句(Non-Query
SQL Statement)

使用SQLiteDatabase对象的execSQL(String sql);可以执行数据的各种操作,包括数据库定义语句(DDL)和数据库操作语言(DML)

如:打开一个SQLiteDatabase的对象为dbase

a. dbase.execSQL(“create table Test(_id
Integer primary key, someNumber Integer);”);

b. dbase.execSQL(“insert into test(_id,
someNumber) values(1,l8);”);

c. dbase.execSQL(“drop table test;”);

(5). SQLite的查询SQL语句(Query SQL
Statement)

SQLiteDatabase执行查询时一个重要对象是游标——cursor(Android.datebase.Cursor)

Android使用游标导航查询的结果集。

如:打开一个SQLiteDatabase的对象为dbase

 

21.在终端命令行中使用SQLite

(1).进入终端界面后,使用adb shell即可使用androidshell命令。

(2).进入SQLite数据库命令:sqlite3 数据库名。

(3).退出SQLite数据库命令:.exit

22.Android中几个重要的工具:

(1).emulator.exeAndroid手机模拟器,当使用Eclipse开发调试运行Android应用程序时,Eclipse会启动模拟器。

(2).adb.exeandroid debug bridge,提供3项重要功能:启动/停止服务、安装/移除应用程序、从模拟器移入/移出文件。

(3).MKSDCARD.exe:一个模拟的SD卡存储器。

(4).DX.exeandroid程序编译器。

23.在命令行中创建、编译和运行android程序:

(1).创建命令:

activity creator –out 输出工程目录     包名.启动Activity

(2).下载并配置ANT

编译android工程使用ANT命令:在工程根目录下输入ant命令即可。

(3).使用emulator命令启动模拟器。

 

抱歉!评论已关闭.