当前位置:文档之家› Android复习纲要

Android复习纲要

Android复习纲要
Android复习纲要

第一章Android入门基础

1、教学要求

了解通信技术,包括1G、2G、3G、4G技术。

掌握开发环境的搭建,学会Android Studio搭建开发环境。

掌握Android程序的开发,并能够手动开发HelloWorld程序。

2、通信技术

第一代通信技术(1G):是指最初的模拟信号、仅限语音的蜂窝电话标准。类似于简单的无线电台,通话锁定在固定频率上,不安全。

第二代通信技术(2G):是指第2代移动通信技术,代表为GSM,以数字语音传输技术为核心。具有接收数据的功能,信号和通话质量好,技术实现简单等特点。

第三代通信技术(3G):是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。声音和数据的传输速度有了较大的提升。

第四代通信技术(4G):又称IMT-Advanced技术,它包括了TD-LTE 和FDD-LTE。速度非常快,可传输高质量视频和图像。IMT--International Mobile Telecommunications Advanced(高级国际移动通信)

3、什么是Android操作系统

Android操作系统最初是由安迪·罗宾(Andy Rubin)开发出的,2005年被Google收购,并于2007年11月5日正式向外界展示了这款系统。Android是一款符合环保概念的移动操作系统,轻薄短小,功能强大。是第一个真正为手机打造的开放性系统。

2008年9月发布Android第1个版本Android1.1。Android系统一经推出,版本升级非常快,几乎每隔半年就有一个新的版本发布。

4、Android操作系统的体系结构

6、Android的虚拟机

Dalvik是Google公司自己设计用于Android平台的虚拟机,它可以简单的完成进程隔离和线程管理,并且可以提高内存的使用效率。

Java虚拟机与Android虚拟机的区别

Java虚拟机是基于栈的架构,在连续内存空间上,读取和存入不方便。

Dalvik虚拟机是基于寄存器的架构,缓存在CPU上,存取速度要快的多。它可以简单的完成进程隔离和线程管理,并且可以提高内存的使用效率。

说明:Android的Dalvik虚拟机默认给每一个应用程序分配16MB的内存,如果Android 加载的资源超过这个内存,会抛出OutofMemoryError异常。

6、Android的开发平台

(1)Android studio

(2)DDMS全称Dalvik Debug Monitor Service,它是Android开发环境中Dalvik虚拟机调试监控服务。DDMS作为IDE、emultor、真机之间的桥梁,将捕捉到终端的ID通过ADB 建立调试桥,从而实现发送指令到测试终端的目的。

(3)Android工程的目录结构

(4)Android程序打包过程

7、Android的程序结构

第二章Android UI开发

1、教学要求

掌握相对布局、线性布局、帧布局的使用。

了解表格布局、网格布局、绝对布局的使用。

学会使用样式和主题,创建不同风格的布局。

学会使用单元测试Junit测试程序。

学会使用LogCat快速定位日志信息。

2、UI概述

在Android应用中,UI(User Interface)界面是人与手机之间数据传递、交互信息的重要媒介和对话接口。Android程序开发最重要的一个环节就是界面处理,界面的美观度直接影响用户的第一印象,因此,开发一个整齐、美观的界面是至关重要的。

Android应用的界面是由View和ViewGroup对象构建而成的。View类是Android系统平台上用户界面表示的基本单元,View的一些子类被统称为Widgets(工具),它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。

ViewGroup是View的一个扩展,它可以容纳多个View,通过ViewGroup类可以创建有联系的子View组成的复合控件。

ViewGroup

ViewGroup View View

View View View

3、Android界面的布局

在Android应用程序中,界面是通过布局文件设定的。

布局文件采用XML格式,每个应用程序默认包含一个主界面布局文件,该文件位于项目的“res/layout”目录中。

通过android:layout_width和android:layout_height属性来指定Layout和空间的宽和高。

?match_parent:表示强制扩展视图以显示全部内容,从而填充布局单元尽可能多的空

间。

?wrap_content:表示强制性地扩展视图以显示全部内容,以wrap_content为例,设

置该属性将完整显示其内部文本。相当于AutoSize,控件会随着内容增大或缩小。

?orientation

?gravity

?layout_gravity

?padding

app的默认布局文件会在MainActivity中的OnCreate()方法中,通过代码setContentView()将Activity加载到View对象中。当运行程序时,才能在界面上看到编写好的布局。

setContentView()的参数为https://www.doczj.com/doc/d717680761.html,yout.布局资源名称。

布局文件的添加,主要在Layout文件夹上点右键,以此选择New->Android XML File,在弹出的窗口中选择相应的布局,并填写文件名称即可。

4、Android中的布局的种类

LinearLayout

线性布局有两种方式指定控件位置,一种是水平方向,一种是竖直方向。设置线性布局为水平或垂直显示需要设置的属性。

RelativeLayout

像素单位(px,pt,dp,sp)

TableLayout

表格布局就是让控件以表格的形式来排列组件的,只要将组件或信息放在单元格中,控件就可以整齐的排列。在TableLayout中,行数由TableRow对象控制的,即布局中有多少TableRow对象,就有多少行。

GridLayout

网格布局是Android4.0新增的布局,它实现了控件的交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发。网格布局用一组无限细的直线将绘图区域分成行、列和单元,并指定控件的显示区域和控件在该区域的显示方式。

FrameLayout

帧布局为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。采用帧布局设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示,且会透明显示之前控件的文本。

AbsoluteLayout

绝对布局需要通过指定x、y坐标来控制每一个控件的位置,放入该布局的组件需要通过android:layout_x和android:layout_y两个属性指定其准确的坐标值,并显示在屏幕上。

5、样式与主题

Android系统中,包含了很多定义好的样式和主题,这些样式和主题用于定义布局显示在界面上的风格。

样式:用于定义界面元素显示风格,包含一个或多个View控件属性集合。样式只能作用于单个View,使用样式可以指定多个控件的相同属性,减少代码书写量。

主题:也是包含一个或多个View控件属性集合。它可以影响多个View,是全局性的。主题通过在AndroidManifest.xml中的结点来确定主题

的应用范围是整个应用,还是单个Activity。

注意:如果一个应用使用了主题,同时单个view也使用了样式,在属性冲突时,样式优先级高。

尽管Android系统提供了很多样式和主题,但有时这些效果并不能满足实际需求,此时还可以自定义样式或者主题。

6、国际化

国际化是指软件开发时,应该具备支持多种语言和地区的功能,为不同国家和地区的用户,提供符合来访者阅读习惯的页面或数据。

由于国际化Internationalization这个单词的首字母“I”和尾字母“N”之间有18个字符,因此国际化被简称为I18N。

为了提供不同语言版本,开发者只需要在res目录下新建对应的values文件夹。

values文件夹的命名规则。

7、单元测试

JUnit是一个测试框架,它是Android SDK1.5加入的自动化测试功能。在完成某个功能后对该功能进行单独测试,而不需要把程序安装到手机或模拟器中进行测试,这样会大大提高程序开发的准确性。

JUnit单元测试既可以嵌入到项目中,也可以作为一个单独的项目,针对某个项目进行测试。具体步骤如下:

1)配置JUnit环境

2)创建测试类

3)运行测试

配置Junit环境,在进行Junit测试时,首先需要在AndroidManifest.xml的结点下配置指令集,以及在结点配置函数库

8、程序调试

LogCat用于输出Android程序中的日志信息。它支持五种输出方式,级别由低到高分别是:

Verbose(V):显示全部信息,黑色,可通过Log.v()等方法进行信息输出。

Debug(D):显示调试信息,蓝色

Info(I):显示一般信息,绿色

Warning(W):显示警告信息,橙色

Error(E):显示错误信息,红色

Assert(A):Android4.0新增加的日志级别

9、Toast的使用

Toast会显示一个小消息告诉用户一些必要信息,该消息在短时间内自动消失,不会干扰用户操作。

Toast组件有两个方法makeText()和show(),其中makeText()方法用于设置需要显示的字符串,show()方法显示消息框。

Toast toast = Toast.makeText(Context,Text,Time); toast.show(); 简写形式如下:Toast.makeText(context,"这是弹出消息!",0).show();

第三章Activity

1、教学要求

掌握Activity的生命周期。

掌握Activity的4种启动模式。

掌握隐式意图和显式意图的使用。

学会使用Intent传递数据。

学会Activity之间数据传递与回传

2、Activity相关定义

Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的用户界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个用户

界面的展现。

Activity是通过调用setContentView()方法来显示指定组件的。该方法既可以接收View对象为参数,也可以接收布局文件对应的资源id为参数。

Activity就像一个界面管理员,用户在界面上的操作是通过Activity来管理的,支持多种操作事件,如:onKeyDown(int keyCode,KeyEvent event)、onKeyUp(int

keyCode,KeyEvent event)、onTouchEvent(MotionEvent event)等。

3、Activity的创建

在Android应用中,可以创建一个或多个Activity,创建步骤如下所示:

1)定义一个类继承自android.app.Activity或者其子类;

2)在res/layout目录中创建一个xml文件,用于创建Activity的布局;

3)在AndroidManifest.xml文件中注册Activity;

4)重写Activity的onCreate()方法,并在该方法中使用setContentView()加载指定的布局文件;

4、Activity的生命周期

生命周期就是一个对象从创建到销毁的过程,每一个对象都有生命周期。同样,Activity

也具有相应的生命周期,Activity的生命周期中分为三种状态:

运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。

暂停状态:Activity对用户来说仍然是可见的,但它不再拥有焦点。

停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。

Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化。

void onCreate(Bundle saveInstanceState):创建时执行。

void onStart():可见时执行

void onRestart():回到前台,再次可见时执行

void onResume():获取焦点时执行

void onPause():失去焦点时执行

void onStop():用户不可见,Activity进入后台时执行

void onDestroy():被销毁时执行

记住下图给出的Activity生命周期过程中的一些回调函数执行的状态和过程。

当Activity从启动到关闭时,会依次执行onCreate() ->onStart()->onResume()->onPause()->onStop()->onDestroy()方法。

当Activity执行到onPause()方法失去焦点时,重新调用回到前台会执行onResume()方法,如果此时进程被杀死,则Activity会重新执行onCreate()事件。

当执行到onStop()方法Activity不可见时,再次回到前台会执行onStart()方法,如果此时进程被杀死,Activity会重新执行onCreate()事件。

5、View点击事件的监听

Android程序中,设置View的点击事件监听共有四种,分别:

1)在布局文件中为控件设置onClick属性指定点击方法;

2)创建一个内部类实现OnClickListener接口并重写onClick()方法,之后需要为控件设置

setOnClickListener(Listener listener);

3)主类中实现OnclickListener接口,然后重写onClick();

4)创建匿名内部类,即在为控件设置监听时直接创建一个OnClickListener实例,并为该实例指定名称。

6、Activity的启动模式

Android采用任务栈的方式来管理Activity实例。当启动一个应用时,操作系统就会为其创建一个任务栈。先启动的Activity被压入栈底,后启动的Activity放在栈顶,通过启动模式可以控制Activity在任务栈的加载情况。

Activity的启动模式有四种,分别是standard、singleTop、singleTask和singleInstance。

在AndroidManifest.xml中,可以通过标签的android:launchMode属性设置启动模式。

7、Activity之间数据传递的方式

Intent是Android程序中各个组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。

Intent启动Activity的方法有:

startActivity(Intent intent)

startActivityForResult(Intent intent, int code)

显式意图

即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。

Intent intent = new Intent(this, Activity02.class);

startActivity(intent);

显式意图还可以根据目标组件的包名、全路径名来指定开启组件

intent.setClassName("cn.itcast.xx","cn.itcast.xx.xxxx");

startActivity(intent);

隐式意图

没有明确指定组件名的Intent称为隐式意图。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。

使用隐式意图开启Activity的示例代码如下所示:

Intent intent = new Intent();

// 设置动作和清单文件一样

intent.setAction("cn.itscast.xxx");

startActivity(intent);

数据的传递

Intent不仅可以用来开启Activity,也可以在Activity之间传递数据。在数据传递时,可以使用putExtra()方法将数据存储在Intent中。

Intent intent = new Intent(this,Activity02.class);

intent.putExtra("extra_data",data);

startActivity(intent);

数据取出

String data = intent.getStringExtra("extra_data");

Bundle数据传递,putExtra()不仅可以传递基本类型数据,还可以传递Bundle对象。

Intent intent = getIntent();

Bundle bundle = intent.getExtras();

String stuName = bundle.getString("name");

数据的回传

Andorid提供了一个startActivityForResult()方法,来实现回传数据。startActivityForResult()方法接收两个参数,第一个参数是Intent,第二个参数用于判断数据的来源。

注意:

startActivityForResult方法启动多个Activity,每一个Activity返回的数据都会回调到onActivityResult()方法。因此首先就是要检查requestCode,来确定数据的来源。

然后再通过resultCod e来判断结果执行是否成功。

最后打开data,获取其中内容并进行输出。

ProgressBar常用的几个方法:setMax(),setProgress(),getProgress()。

打开系统照相机清单文件的配置

第四章数据存储

1、教学要求

了解5种数据存储方式的特点。

●文件存储(以I/O流的方式存入手机内存、SD卡)

●SharedPrefernces存储,常用于存储简单的参数设置,本质上是XML,通过

Map方式。

●SQLite数据库

●ContentProvider,Android四大组件之一,以数据库形式存入手机内存,可以

共享自己的数据给其他应用使用,提供统一的数据方式方式,更规范。

●网络存储,把文件存储在服务器,而不是本地。

学会使用文件存储,SharedPrefrences存储数据。

掌握XML文件的序列化及解析。

2、文件存储

文件存储是Android中最基本的一种数据存储方式,它与Java中的文件存储类似,都是通过I/O流的形式把数据原封不动的存储到文档中。

Android中的文件存储分为内部存储和外部存储。

内部存储:

使用的是Context提供的openFileOutput()和openFileInput()方法,通过这两个方法可以分别获取FileOutputStream对象和FileInputStream对象,具体如下:

FileOutputStream openFileOutput(string name, int mode);

FileInputStream openFileInput(string name);

openFileOutput用于打开应用程序的输出流,将数据从内存中输出到指定文件中,即写入文件。

openFileInput用于打开对应文件的输入流,将数据从文件中输入到内存中,即读取文件。

文件的操作模式

int mode表示文件操作方式,即读写方式,取值有4种:

MODE_PRIVATE:该文件只能被当前程序读写,默认操作方式

MODE_APPEND:该文件内容可以追加,常用的方式之一

MODE_WORLD_READABLE:该文件可以被其他程序读取,安全性低,通常不用

MODE_WORLD_WRITEABLE:该文件可以被其他程序写入,安全性低,通常不用

外部存储:

外部存储通常是指将外部文件存储到外部设备上,一般是指SD卡等,通常位置mnt/sdcard目录下。

外部设备不够安全:外部存储的文件可以被其他应用程序共享,当连到计算机时,文件可被浏览,修改和删除

外部设备状态有可能被移除、丢失或处于其他装态,在使用之前要调用Enviornment.getExternalStorageState()来确认外围设备是否可用。当外围设备具有读写权限时,可以通过FileOutpuStream,FileInputStream或FileReader,FileWriter进行读写。

String state = Environment.getExternalStorageState();//获取外设状态

if(state.equals(Environment.MEDIA_MOUNTED))//判断外设是否可用

Environment.getExternalStorageDirectory();//获取外设路径

操作SD卡数据需要在清单文件的结点下配置权限

3、XML序列化

(1)什么是序列化

(2)XML序列化

(3)XML解析

XMLPullParser的常用属性

(4)JSON解析

4、SharedPreferences

SharedPreferences是Android平台上一个轻量级的存储类,用于存储一些应用程序的配置参数,例如用户名、密码、自定义参数的设置等。

SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中,该文件位于“data/data//shared_prefs”文件夹中。

●SharedPreferences存储的数据是以key/value键值对的形式保存在XML文件中的。

●SharedPreferences中value的值只能是float, int, long, boolean, String, StringSet类

型数据。

●使用SharedPreferences存储数据时,首先通过context.get SharedPreferences(String

name, int mode)获取SharedPreferences实例对象(在Activity中可以直接使用this

表示上下文),如果不在Activity中,则需要传入一个Context获取上下文SharedPrefernces对象本身只能获取数据,并不支持数据的存储和修改,数据的存储和修改需要通过SharedPrefernces.Editor()对象实现,要获取Editor实例对象,需要调用SharedPrefernces.Editor.editor()方法。

●存入数据和删除数据时,一定要在最后使用https://www.doczj.com/doc/d717680761.html,mit()方法提交数据。

●获取数据的Key值与存入数据的key值要一致,否则查找不到数据。

●保存SharedPreferences的key值时,可以用静态变量保存,一面存储、删除时写错

了。如:private static final String key=“itcast”

–存储数据P107

使用SharedPreferences存储数据时,需要先获取SharedPreferences对象,通过该对象获取到Editor对象,然后通过Editor对象的相关方法存储数据:

-S haredPreferences sp = getSharedPreferences(“data”,MODE_PRIVATE);//data 表示文件名

-E ditor editor = sp.edit(); //获取编辑器

-e ditor.putStrin g(“name”, “传智播客”); //存入String类型数据

-e ditor.putInt(“age”, 8); //存入int类型数据

-e https://www.doczj.com/doc/d717680761.html,mit(); //提交修改

QQ登录案例

第五章SQLite数据库

1、教学要求

学会SQLite数据库的基本操作。

学会使用sqlite3工具操作数据库。

学会使用ListView控件展示数据。

2、SQLite数据库简介

SQLite是一个轻量级数据库,第一个版本诞生于2000年5月。它最初是为嵌入式设计的,占用资源非常低,在内存中只需要占用几百KB的存储空间。

SQLite是遵守ACID关联式的数据库管理系统。ACID是指数据库事务正确执行的基本要素,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

SQLite没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)五种数据类型。

3、SQLite的操作

SQLiteOpenHelper类常用方法

SQLiteDatabase类常用方法

Cursor类常用方法

SQLite事务操作

事务执行完成后一定要endTransaction方法关闭事务,当执行到该方法时,判断是否有执行成功标记,如果有,则提交数据,否则回滚数据。最后关闭事务,如果不关闭,则会在超时自动关闭,这种方式会降低数据库并发效率,因此,通常情况下,该方法在finally中执行。

开始数据库事务、关闭事务、关闭数据库的方法。

自学sqlite3

在Android SDK的platform-tools目录下提供了一"sqlite3.exe工具,它是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口在有些时候,开发者利用该工具来査询、管理数据库。

* :\Android\sdk\platform-tools\ sqlite3

如何在命令行通过sqlite3工具访问数据库**,并查询表*中的数据。

4、数据的展示—ListView

常见属性

BaseAdapter

SimpleAdapter ArrayAdapter 即基本的适配器。它实际上

就是一个抽象类,该类拥有四个

抽象方法。在Android 开发中,

就是根据这几个抽象方法来对

ListView 进行数据适配的。 SimpleAdapter 继承自BaseAdapter ,实现了BaseAdapter 的四个抽象方法,分别是getCount()、getItem()、getItemId()、

getView()方法。 ArrayAdapter 也继承自BaseAdapter ,与SimpleAdapter 相同。ArrayAdapter 通常用于适配TextView 控件,例如Android 系统中的设置菜单(Setting )。

SimpleAdapter 继承自BaseAdapter ,实现了BaseAdapter 的四个抽象方法,分别是getCount()、getItem()、getItemId()、getView()方法(表5-5)。 因此,开发者只需要在创建SimpleAdapter 实例时,在构造方法中传递相应参数即可。SimpleAdapter 构造方法如:

Public SimpleAdapter(Context context, List< ? extends Map> data, int resource, string[] from, int[] to);

Context context :getView()方法中需要用到Context 将布局转换为View 对象。

List> data: 数据集合,SimpleAdapter 需要在getCount ()中返回数据集合大小。

Int resource: Item 布局的资源ID 。

String [] from: Map 集合里的Key 。

Int [] to: Item 布局相应的控件id.

ListView 的优化

1) 复用ConvertView

2) 使用ViewHolder 类

第六章 广播接收者

1、教学要求

学会自定义广播。

掌握有序广播和无序广播的使用。

掌握常用广播接收者(开机启动,短信接收)的使用。

2、广播接受者的创建与注册

要使用广播接收者接收其他应用程序发出的广播,先要在本应用中创建广播接收者并进行注册。注册广播有两种方式,常驻型广播和非常驻型广播。

1、创建广播接收者

public class MyBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

}

} //要对监听到的广播进行处理,需要创建一个继承自BroadcastReceiver 的类,并重写onReceive方法。当监听到有广播发出时,就会调用onReceive方法,在onReceive()中事件处理即可。

(3)自定义广播的接收与发送

(4)有序广播与无序广播的接收

sendOrderedBroadcast()方法,该方法参数的作用

(5)广播的拦截

有序广播的拦截abortBroadcast( )

(6)定向广播

第七章服务

1、教学要求

掌握服务的生命周期。

掌握服务的两种启动方式。

学会使用服务与Activity进行通信。

学会调用其他应用的服务,实现跨进程通信。

2、什么是服务、服务的创建

服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。

服务的创建方式与创建Activity类似,只需要继承Service类,然后在清单文件中注册即可。

1、创建服务

public class MyService extends Service {

public IBinder onBind(Intent arg0) {

return null;

}

}

上述代码还没有实现具体的功能。值得注意的是,onBind()是Service类中唯一的抽象方法,所以必须要在子类中实现。

由于服务是Android的四大组件之一,因此,需要再清单文件中进行注册,注册代码如下:

在清单文件中配置

………… >

至此,整个服务便创建完成了,从上述过程看,服务的创建非常简单,需要注意的是,一定不要忘记在清单文件中对服务进行注册,否则服务不会生效。

3、服务的生命周期

与其他组件不同的是,Service不能自己主动运行,需要调用相应的方法来启动。

启动服务的方法是Context.startService()和Context.bindService()。使用不同的方法启动服务,服务的生命周期也会不同。

(1)startService方式开启服务的生命周期

当其他应用调用startService()方法时,服务会先执行onCreate(),onStartCommand()方法,此时,服务处于运行状态,直到自身调用stopSelf()方法或者其他组件调用stopService()方法时服务停止,最终被系统销毁。

这种方式开启的服务,服务会长期的在后台运行,并且服务的状态与开启者的状态没有关系。

Context.startService()方式启动

Context.startService()方式的生命周期:启动时,startService –> onCreate() –> onStart(),停止时,stopService–> onDestroy()如果调用者直接退出而没有停止Service,则Service 会一直在后台运行。

Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。

采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法.

(2)bindService方式开启服务的生命周期

当其他组件调用bindService()启动服务时,服务被创建,接着客户端通过Ibinder接口与服务通信。客户端通过unbindService()方法关闭连接,多个客户端能绑定在同一服务上,并且当他们都解绑时,系统将直接销毁服务(服务不需要被停止)。随着服务的启动,会执行onCreate() 方法,服务处于绑定状态,客户端通过unbindService()方法关闭连接,解除绑定时,系统将直接销毁服务,服务不需要被停止。

这种方式开启的服务与开启者的状态有关,当调用者销毁了,服务也会被销毁。

startService方式与bindService方式开启服务时,服务生命周期中所执行的方法时不同的,如:

onCreate():第一次创建服务时执行的方法

onDestroy():服务被销毁时执行的方法

onStartCommand():客户端通过调用startService(Intent, Service)显示启动服务时执行该方法。

onBind():客户端通过调用bindService(Intent, Service, int)启动服务时执行该方法。

onUnbind():客户端调用unBindService(ServiceConnection conn)断开服务绑定时执行的方法。

这些方法都是Service生命周期中重要的回调方法,通过这些方法可以观察服务的创建、开启、绑定、解绑、销毁等过程。

4、服务的启动方式

使用startService()方式开启服务的具体代码如下所示:

Intent intent = new Intent(this, StartService.class);

Context.startService(intent);

Context.stopService(intent);

服务也是Android中的四大组件之一,因此需要在清单文件中注册

bind方式启动服务

当程序使用startService()和stopService()启动、关闭服务时,服务与调用者之间基本不存在太多的关联,也无法与访问者进行通信、数据交互等。如果服务需要与调用者进行方法调用和数据交互时,应该使用bindService()和unbindService()启动、关闭服务。

bindService(Intent service,ServiceConnection conn, int flags)

Intent对象用于指定要启动的Service

ServiceConnection对象用于监听调用者与Service的连接状态。

flags指定绑定时是否自动创建Service(如果Service还未创建)。

5、服务的通信

本地的通信

在Android系统中,服务的通信方式有两种,一种是本地服务通信,一种是远程服务通信。

本地服务通信是指应用程序内部的通信,而远程服务通信是指两个应用程序之间的通信。使用这两种方式进行通信时必须满足一个前提,就是服务必须以绑定方式开启。

在进行本地服务通信时,可以使用Service类提供的IBinder onBind(Intent intent)方法,该方法返回的IBinder对象会作为参数传递给ServiceConnection类中onServiceConnected(ComponentName name,IBinder service)方法,这样访问者就可以通过IBinder对象与Service进行通信。

远程通信

远程服务通信是通过AIDL(Android Interface Definition Language)实现的,它是一种接口定义语言(Interface Definition Language),其语法格式非常简单,与Java中定义接口很相似。但还存在差异:

1、AIDL定义接口的源代码必须以.aidl结尾

2、AIDL接口中用到的数据类型,除基本类型,String,CharSequence,List,Map之外,其他类型全部需要导入包,即使他们在同一个包中。

定义AIDL接口,实质上只是定义了进程间通信接口,服务端、客户端都需要使用Android SDK目录下的platform-tools子目录下的aidl.exe工具为该接口提供实现。如果使用ADT工具进行开发,则ADT会自动实现AIDL接口。

远程服务通信是通过AIDL(Android Interface Definition Language)实现的,它是一种接口定义语言(Interface Definition Language),其语法格式非常简单,与Java中定义接口很相似。

package cn.itcast.service;

interface IService{

String getName();

int getPrice();

}

定义好AIDL接口之后,接着需要在应用程序中创建Service的子类。该Service 的onBind()方法所返回的IBinder对象应该是ADT所生成的IService.Stub的子类。

第八章内容提供者

1、教学要求

了解什么是内容提供者。

学会使用内容提供者。

学会使用ContentResolver操作其他应用的数据。

学会使用内容观察者观察其他应用数据的变化。

2、内容提供者

Android 中内容提供者的作用

为了实现这些功能,Android 系统提供了一个跨应用进行数据访问的组件,这个组件就是内容提供者ContentProvider 。

定义一个类继承android.content 包下的ContentProvider 类(抽象类)。子类需要重写它的onCreate()、delete()、getType()、insert()、query()、update()这几个抽象方法。

ContentProvider 是四大组件之一,必须要在清单文件中注册

3、数据暴露的安全性问题

当使用provider 暴露敏感数据时,为了数据安全,在注册ContentProvider 时,还可以为其设定一些列的权限,具体操作如下:

利用android:permission 属性,如果在注册provider 时使用了该属性,则其他应用访问该ContentProvider 时必须加上该权限,否则会报异常。如:PersonDBProvider 注册了下述权限,android:permission=“mobile.permission.PROVIDER ”,则其他应用访问该Provider 时需要加上才可以。

此外,还可以为Provider 配置android:readpermission 属性,如果在注册了provider 时使用了该属性,那么其他应用在使用query 方法查询数据时,必须加上该权限。

android:writePermission 属性,如果在注册provider 时使用该属性,那么其他应用通过

ContentProvider的增、删、改这个几个方法操作数据时需要加上该权限。

如果在注册Provider时为其指定了自定义权限(即系统内不存在的权限)。为了让权限生效,首先需要单击清单文件中的permission标签页的Add按钮,进行添加。

4、Uri简介

ContentProvider的几个抽象方法,这几个抽象方法中有一个参数Uri,它代表了数据的操作方法。Uri是由scheme、authorites、path三部分组成。

scheme:“content://”是一个标准的前缀,表明这个数据被内容提供者所控制,它不会被修改;

authorities:“cn.itcast.db.personprovider”是在清单文件中指定的android:authorities属性值,该值必须唯一,它表示了当前的内容提供者;

path:“/person”代表资源(或者数据),当访问者需要操作不同数据时,这个部分是动态改变的。

Uri类常用方法

Uri.parse(String str)方法是将字符串转化成Uri对象的。为了解析Uri对象,Android系统提供了一个辅助工具类UriMatcher用于匹配Uri。

5、内容提供者的访问

在Android系统中,ContentResolver充当着桥梁的角色。应用程序通过ContentProvider 暴露自己的数据,通过ContentResolver对应用程序暴露的数据进行操作。

在使用ContentProvider暴露数据时提供了相应的Uri,因此,访问现有的ContentProvider 时要指定相应的Uri,然后通过ContentResolver对象来实现数据的操作。

6、内容观察者

使用ContentProvider将数据共享出来后,再使用ContentResolver查询ContentProvider 共享出来的数据。如果应用程序需要监听ContentProvider共享的数据是否发生变化,可以

使用ContentObserver (内容观察者)对数据进行监听。

当数据发生变化

是向消息中心发

观察消息中心的消息,通过消息观察A

内容观察者常用方法

Android项目文档

课程代号:83308113 2014-2015学年第1学期《ISAS与项目训练(一)》 项目:Android 班级:网络2班 学号: 13734214 姓名:刘雨亭. 指导教师:温一军周洪斌 . 沙洲职业工学院 NIIT安艾艾迪

目录 一、系统简介 (3) 二、发展历程 (3) 三、发行版本 (4) 四、国内外手机应用状况 (4) 五、发展趋势 (5) 六、Android的相关技术介绍及分析 (6) 6.1、Android系统架构研究 (6) 6.2、应用程序框架 (7) 6.3、类库 (8) 七、Android的API (10) 八、Android活动的生命周期 (11)

一、系统简介 Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。其中的文字使用了Ascender 公司专门制作的称之为“Droid ”的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。 二、发展历程 2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。 2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责Android项目。 2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发

Android实训报告

2016年 1 月 5 日

摘要: 本文首先介绍了Android开发环境的安装和部署过程;之后介绍了Android项目的架构及应用程序组成,着重讲解了手机用户界面的布局方法和常见开发控件的使用;然后介绍了Android中的文件存储管理、SQLite数据库存取与共享、2D绘图设计、多媒体应用以及和短信开发等知识;最后介绍了Android中的单元测试以及国际化的方法,通过发布案例程序完成Android知识的讲解,同时运用了photoshop,实现了对界面的优化设计。 关键词:Android;开发;SQL;多媒体运用;PHOTOSHOP

目录 一、实训背景及目的要求 (4) 1.1背景简介 (4) 1.2实训目的及要求 (4) 二、设计思路 (5) 2.1设计题目 (5) 2.2功能分析 (5) 2.3模块划分 (6) 三、设计实现及代码分析 (6) 3.1第一个Activity (6) 3.1.1布局文件:main.xml: (6) 3.1.2源代码文件:MainActivity.java (10) 3.2第二个Activity (13) 3.2.1布局文件:result.xml (13) 3.2.2源代码文件:ResultActivity.java (14) 3.3字符串资源文件:strings.xml (18) 3.4程序清单文件:AndroidManifest.xml (19) 四、程序功能测试及截图 (21) 4.1工程项目目录 (21) 4.2程序运行界面: (21) 4.3未填身高提示: (22) 4.4计算示例: (22) 五、课程设计(实训)总结 (23)

Android期末考试复习试卷(仅供参考)

一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是 Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是 Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做 Android 数据存储(A ) A SQlite B M ySql C Oracle D DB2 5、下列哪个可做EditText编辑框的提示信息( D ) A android:inputType B android:text C android:digits D android:hint 6、Math.ceil(99.1) 的结果是(B ) A 99 B 100 C 99.1 D 99.0 7、android 中下列属于Intent的作用的是(C) A实现应用程序间的数据共享 B是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D处理一个应用程序整体性的工作 8、关于 res/raw 目录说确的是A A这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B这里的文件是原封不动的存储到设备上会转换为二进制的格式 C这里的文件最终以二进制的格式存储到指定的包中 D这里的文件最终不会以二进制的格式存储到指定的包中 9、Math.round(11.5)等于多少(). Math.round(-11.5)等于多少( C) A 11 ,-11 B 11 ,-12 C 12 ,-11 D 12 ,-12 10、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A ) A onDestroy() B onClear() C onFinish() D onStop() 二、填空题(10 分,共10 题,每空1 分) 1、为了使 android 适应不同分辨率机型,布局时字体单位应用( sp ),像素单位应用( sp )和(dip ) 2、定义 LinearLayout 水平方向布局时至少设置的三个属性: ( android:orientation), (android:layout width)和(android:layout height)

(完整word版)AndroidAPP开发期末复习资料

1.短信的内容提供者是() A. ContactProvider B. MessageProvider C. SmsProvider D. TelephonyProvider 2.以下是Android中用于xml解析方式的是()。 A. SAX B. DOM C. XmlPullParser D. Juint 3.下列选项中,关于Bitmap类描述正确的是()。 A. Bitmap类表示画 B. Bitmap类代表画布 C. Bitmap类是最常用的绘图类 D. Bitmap类表示位图工厂 4.Dalvik虚拟机是基于()的架构。 A.栈 B.堆 C. 寄存器 D. 存储器 5.在Android UI开发中,常见的刮刮卡是通过()实现的。 A.FrameLayout B.LinearLayout C.RelativeLayout D.TableLayout 6.注册一个短信到来的广播事件需要在清单文件配置什么权限()。 A. B. C. D. 7.关于服务的创建说法错误的是()。 A. Android中创建服务需要继承Service类 B. Android 中的服务需要在清单文件配置。

Android项目打包成apk

Android开发把项目打包成apk 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为".apk"。将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装。Android系统要求具有其开发者签名的私人密钥的应用程序才能够被安装。生成数字签名以及打包项目成APK都可以采用命令行的方式,但是通过Eclipse中的向导我们会更加方便地完成整个流程,打包发布的过程非常简单。下面以前面开发的"Hello World"为例,演示如何生成APK。 右键单击项目名称,选择"Android Tools",再选择"Export Signed Application Package…",如下图所示。 进入左图所示页面,单击"Next>"按钮,进入如右图所示窗口。

其中,Location为证书库将要存放的位置,Password是证书库的密码。 打包程序时,系统要求使用数字证书。如果没有数字证书,我们选择"Create new keystore"新创建一个证书库,单击"Browse…"按钮选择证书库将要保存的位置并填入信息,如左图所示。单击"Next>"按钮,如右图所示。 其中,Alias是该证书的名字;password是该证书的密码;Validity是指定证书有效

年份。 如果已经拥有一个证书,那么可以选择"Use existing keystore",之后直接定位到证书库的位置并填入密码,如左图所示,接下来填入密码,单击"Next>"按钮,如右图所示。 单击"Browse…"按钮,选择文件保存的位置,如下图所示。 "Destination APK file "指定APK存储的位置。单击"Finish"按钮,打包完成。

ANDROID实训题

1.在Eclipse中创建Android项目,实现游戏界面中的我同意游戏条款功能。点出“进入”按钮,将显示进入游戏按钮,点击“我同意”复选框,将显示“进入”按钮。 2.在Eclipse中创建Android项目,实现猜猜鸡蛋放在哪只鞋子里的小游戏。单击其中的任意一只鞋子,将打开鞋子,显示里面是否有鸡蛋。 3.在Eclipse中创建Android项目,实现模拟windows7图片预览窗格效果。点击任意一张图片,可以在右侧显示该图片的预览效果。 4.实现应用对话框主题的AboutActivity。 运行本实例,将显示泡泡龙游戏的主界面,单击“关于”按钮,将显示如图5.6所示的“关于”对话框。

5.在Eclipse中创建Android项目,实现根据输入的性别和身高计算标准体重。 运行本实例,将显示一个输入计算标准体重条件的界面,选择性别并输入身高后,如图5.10所示,单击“确定”按钮,将显示如图5.11所示的计算结果界面。 6.在Eclipse中创建Android项目,名称为5.6,实现带选择头像的用户注册页面,打开新的Activity选择头像,并将选择的头像返回到原Activity中。 运行本实例,将显示一个填写用户注册信息的界面,输入用户名、密码、确认密码和E-mail 地址后,单击“选择头像”按钮,将打开如图5.12所示的选择头像界面,单击想要的头像,将返回到填写用户注册信息的界面。

7.在Eclipse中创建Android项目,仿QQ端登录,实现在第一个Activity中显示登录界面,输入正确的账号和密码后,启动另一个Activity显示当前登录用户的昵称。 运行本实例,在屏幕上将显示一个登录对话框,输入账号和密码后,单击“登录”按钮,将判断输入的账号和密码是否正确,如果正确,将打开主界面,在该界面中,将显示当前登录用户的昵称和“退出登录”按钮,单击“退出登录”按钮,将返回到用户登录界面。 8.查看原图功能的图像浏览器,在Eclipse中创建Android项目,实现在第一个Activity中显示图片缩略图,单击任意图片时,启动另一个Activity显示该图片的原图。 运行本实例,在屏幕上将显示图片缩略图,单击任意图片,可以显示该图片的原始图像。例如,单击第2行第3列的图片,将显示界面。 9.在Eclipse中创建Android项目,实现拨打电话功能。 在编辑框中输入需要拨打的电话,单击“拨打电话”按钮就可以完成拨号的功能。 10.在Eclipse中创建Android项目,实现打开网页功能。 单击“打开网页”按钮,显示谷歌主页。 11.在Eclipse中创建Android项目,当用户短时间单击按钮和长时间单击按钮时,显示不同的提示信息。 运行程序后,短时间单击按钮,显示如图7.4所示的提示信息。 长时间单击按钮,显示如图7.5所示的提示信息。

Android 复习题+答案

1.可以开启SD卡访问权限的设置 2.在Android项目中,哪个文件用于存放布局文件res下layout文件夹 3.如果手机内存不足,操作系统会选择杀死onstop被调用即 Activity被停止或处于后台状态下的Activity以释放更多的内存空间 4.属性android:layout_toLeftOf是哪种布局管理器所特有相对布局 5.ListView是Android中常用的列表控件,给ListView填充数据可 以采用适配器,适配器不能直接使用,需要自定义类继承的是答案? 6.TextView控件的属性android:textAppearance规定文字的显示方 式,其中用于显示大号字体的属性值是 ?android:attr/textAppearanceLarge 7.Android中的进度条有两种样式:环形和水平,如果要设置为水平 进度条需要给属性style赋值 ?android:progressBarStyleHorizontal 8.在TableLayout布局管理器的属性中,能够实现设置可伸展的列, 伸展后使得该行元素充满整行的是android:strechColumns=”0” 9.在Android常用的布局管理器中,每次只能呈现一个控件的布局 管理器是帧布局FrameLayout 10.在Android项目中,哪个文件夹用于存放位图文件assets 11.Android常用的图片资源中,不包括哪种格式的图片bmp位图 12.SharedPreferences可以将数据以xml文件的形式保存在手机

总结android项目的基本开发步骤

总结android项目的基本开发步骤 做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。一应用规划: -确定功能。 -必须的界面及界面跳转的流程。 -需要的数据及数据的来源及格式。 -是否需要服务端支持。 -是否需要本地数据库支持。 -是否需要特殊权限。 -是否需要后台服务。 二架构设计: -分层。 -网络连接。 -数据处理-xml、domain。 -封装Activity。 三界面设计: -主界面确定。 -模块界面、列表、查看、编辑界面。 -菜单、按钮、对话框、提示信息。 -界面总体颜色。 四数据操作和存储: -数据来源。 -数据类型。 -存储方式。 五业务实现: -客户端业务解析。 六页面跳转: -每个页面间的跳转。 -菜单、按钮、事件等。 #开发之前还需要做一些准备工作 1.技术储备 a.Java 重要程度:????? -框架,编程思想,编码规范,设计模式等 b.Xml 重要程度:???? -布局,选择器,配置文件等 c.数据库重要程度:??? -关系型数据库,SQLite

2.开发工具 a.Eclipse或者AndroidStudio b.Android SDK c.其他:svn / git,JDK,资源,数据库,模拟器,真机等 #开发过程中还有以下的一些流程 1.多种开源框架和优秀源码的引用 -xUtils,Volley,Vitamio,SlidingMenu等 2.数据访问 -访问框架 -传递方式 3.多种API的接入 -短信服务 -即时通信 -消息推送 -第三方登录等 4.后台开发 -后台的开发,为app提供接口 -后台的云服务器 5.内存优化 -垃圾回收 -一、二级缓存 -适配器的优化 -图片框架及资源的优化 6.多线程异步 -Handler -Asynctask 7.屏幕适配 #开发基本结束之后还有很多需要流程 1.多型号真机实测 2.云服务器优化 3.APK加密 4.数字签名 5.用户协议 6.应用平台 7.项目上线 8.应用推广和广告插入 9.版本更新和维护

Android实训心得

Android实训心得 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通 的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发 范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比 较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。 我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。 通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前 沿开发技术的了解,也是对编程知识的一次提升。 通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以 快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的 界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进 行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间 的跳转Intent管理,通过Bundle对数据在界面之间进行传输。 在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广 播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一 个当前的CurrentActivity这个变量进行控制,进行处理。 在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离 不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发, 必须要具备Linux,CC++高级编程才能深入的涉及Android Framework和Android内 核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。

android课程介绍

1.课程基本信息 课程编号:M21F58D10 课程名称:Android应用与开发 开设学期:第3学期 总学时:60 总学分:4 课程类别:岗位能力课程课程性质:必修课 适用专业:软件技术(移动应用开发) 责任单位:计算机与软件学院 2.课程定位 《Android应用与开发》课程是软件技术(移动应用开发方向)专业的岗位能力课程,课程的开设依据是软件技术专业人才培养目标和相关职业岗位(群)的能力要求,对本专业所面向的手机软件开发与测试、软件开发与项目管理等岗位所需要的知识、技能和素质目标的达成起支撑作用。 在课程设置上,前导课程有《Java程序设计》(M21F1611),《数据结构》(M21F232),后续课程有《移动互联网开发综合实训》(M21J57B10)、《毕业实习》(M21J991)。 3.课程设计思路 首先依据专业人才培养方案中关于人才培养目标的阐述,明确课程目标;其次,结合职业教育课程观、教学观、能力观,基于软件工程的开发过程,以项目化教学来组织课程内容,在课程内容的选择与排序中,以软件项目研发的不同阶段、典型任务为载体,将课程内容划分为互相联系的学习情景;第三,通过对各学习情景中学习目标、主要内容、授课方式、师生要求等各项内容的描述,来规范课程所要求的内容;第四,通过对课程内容的选取和组合,以一个完整的项目为载体,完成课程的实施;最后,通过对项目实施过程中各个环节的考察和评价,来完成对课程的评鉴与考核。 本课程在设计上本着懂方法,重应用的总体思路,突出体现职业教育的技能型、应用性特色,着重培养学生的实践应用技能,力求达到理论方法够用,技术技能过硬的目的。 4.课程建设基本理念 本课程按照理论实践一体、课内外互补、课堂教学与培优工程相结合的课程设计指导思想,以任务或项目为载体组织教学内容,突出学生的主体地位,实现“教、学、做”的有机融合;通过班级讲授、团队学习、个体辅导、展示交流、技能大赛等手段,实现从模仿到应用到创新的高职学生递进式培养。 本课程强调对学生职业岗位能力的培养和职业素养的养成,针对不同环节,采用特定的教学方法,有意识、有步骤地将职业能力的训练和职业素养的形成融入到实际的教学过程中。

android考试复习资料

Unit 4. Android 生命周期 Android 系统中的进程优先级由高到低 前台进程 高优先级 中优先级 低优先级 可见进程 服务进程 后台进程 空进程 Android 组件 组件是可以调用的基本功能模块,Android 应用程序就是由组件组成的 Android 系统有四个重要的组件,分别是Activity 、Service 、BroadcaseReceiver 和ContentProvider Activity 是 Android 程序的呈现层,显示可视化的用户界面,Android 应用程序可以包含一个或多个Activity ,一般在程序启动后会呈现一个Activity 。 Service 用于没有用户界面,但需要长时间在后台运行的应用 BroadcaseReceiver 是用来接受并响应广播消息的组件 ContentProvider 是Android 系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider 访问其他应用程序的私有数据,私有数据可以是存储在文件系统中的文件,也可以是SQLite 中的数据库 Activity 表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态 Activity 事件的回调函数: protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop();

protected void onDestroy(); Activity: onCreate onDestroy onStart onStop onResume onPause onRestore InstanceState onSave InstanceState onRestart 活动生命周期可视生命周期全生命周期 1 2 3 45 6 7 89 Android 系统提供了两种调试工具LogCat 和DevTools ,用于定位、分析及修复程序中出现的错误 LogCat 程序调试原理 1.引入android.util.Log 包 2.使用Log.v(),Log.d(),Log.i(),Log.w() 和 Log.e()五个函数在程序中设置“日志点” 3.当程序运行到“日志点”时,应用程序的日志信息便被发送到LogCat 中 4.判断“日志点”信息与预期的内容是否一致 E.g. final static String TAG = "LOGCA T"; Log.v(TAG ,"Verbose"); DevTools 是用于调试和测试的工具,包括了一系列用户各种用途的小工具 Unit 5. Android 用户界面 ? 常见的系统控件包括TextView 、EditText 、Button 、ImageButton 、Checkbox 、RadioButton 、 Spinner 、ListView 和TabHost TextView :显示字符串,EditText 是一个具有编辑功能的TextView 相应的XML 文件:

Android实习总结报告模板

Xxxxxx大学 专业实习报告 实习时间: 201X.XX.X——201X.XX.XX 学院:XXXXXXXXXXX学院 专业名称:计算机通信 学号: XXXXXXXXXX 姓名: XXXX 指导老师: XXXX 实习地点: XXXXXXXX信息技术有限公司

一、实训地点 XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。 二、实训目的 到实际生产中的种种 Android Android Android 现对android Android android实习可以让我们与时代最 目的: 1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。 培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。 培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括: 1、确定开发的程序,收集和调查有关技术资料。 2、按软件工程步骤进行程序设计。 3、对完成的程序进行测试和完善。 4、完成课程设计报告。 三、实训内容 学习实训的内容主要包括如下: ●开发环境:了解了android的起源与发展,学习安装 Eclipse 插件 (ADT)学 习 AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具 ●Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen

目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录在这个目录中我们可以存放应用使用到的各种资源,如xml 界面文件,图片或数据。assets资源目录Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件。 基础开发 一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy() 这七个方法定义了Activity的完整生命周期 二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent 使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dssAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml 中设置。默认为:DEFAULT。 Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。 Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。 Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。 三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面; 四、BroadcastRecever 生命周期 1.在广播到达接收者时调用onRecever();方法 2.注册广播的几种方式包括:代码注册;项目清单注册; 五、Handler 1.Handler、Message、MessageQueue和Looper之间的关系的关系,Handler 的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MessageQueue封装在Looper中)发送消息,Handler 在创建时就会关联以个Looper默认关联当前Looper.

Android复习题

Android复习题及答案 一、选择题 1.下列哪些语句关于存回收的说明是正确的?( ) A、程序员必须创建一个线程来释放存 B、存回收程序负责释放无用存 C、存回收程序允许程序员直接释放存 D、存回收程序可以在指定的时间释放存对象 2.Android 中下列属于Intent的作用的是( ) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 3.下面的对自定style的方式正确的是( ) A、 B、 C、 fill_parent D、 fill_parent 4.在Android中使用Menu时可能需要重写的方法有( )。 A、onCreateOptionsMenu() B、onCreateMenu() C、onOptionsItemSelected() D、onItemSelected() 5.在Android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版

Android复习

Q:简述Android平台体系结构的层次划分,并说明各个层次的作用。 A:Android是基于Linux内核的软件平台和操作系统,采用了软件堆栈的架构,共分为4层:第一层Linux内核,提供有操作系统内核管理的底层基础功能;第二层中间层,由函数库和Android运行时构成;第三层应用程序框架层,提供了Android平台的管理功能和组件重用机制;第四层应用程序层,提供了一系列核心应用程序。 Q:在AndroidSDK中,Android模拟器,Android调试桥和DBMS 是Android应用程序开发过程中经常使用的工具,简述这三个工具的用途。 A:Android模拟器 支持多种屏幕分辨率和不同的外观,支持加载SD卡映像文件,更改模拟网络状态,延迟 和速度,模拟电话呼叫和接收短信等;不支持接听真实电话,USB连接,摄像头捕获,设 备耳机,电池电量和AC电源检测,SD卡插拔检查和使用蓝牙设备 Android调试桥(Android Debug Bridge,ADB) 用于连接Android设备或模拟器的工具,负责将应用程序安装到模拟器和设备中,或从 模拟器或设备中传输文件 DDMS Android系统中内置的调试工具,监视Android系统中进程、堆栈信息,查看logcat日 志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和SMS短信,以及浏览Android 模拟器文件系统等. Q:简述Activity声明周期的4种状态,以及状态之间的变换关系。 A:Activity生命周期指Activity从启动到销毁的过程Activity启动后处于活动状态,此时Activity在用户界面中处于最上层,完全能被用 户看到,能够与用户进行交互。如果用户启动了新的Activity,部分遮挡了当前的 Activity,则当前的Activity转换为暂停状态,该Activity不再处于用户界面的最上 层,且不能够与用户进行交互。如果用户启动了新的Activity完全遮挡当前的Activity, 则当前的Activity转换为停止状态,停止状态的Activity 将优先被终止。活动状态的 Activity被用户关闭后,或暂停状态或停止状态的Activity被系统终止后Activity便 进入了非活动状态。 Q:简述Android系统三大菜单的特点以及使用方式 A:菜单是应用程序中非常重要的组成部分,在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,为程序开发人员提供了易于使用的编程。 Android系统支持三种菜单 选项菜单(Option Menu):按设备上Menu 键显示的菜单。 子菜单(Submenu):其它两种菜单都可以加入子菜单,但子菜单不能再嵌套子菜单 快捷菜单(Context Menu):长按特定界面view显示,跟具体的 view 绑定在一起,类 似PC上鼠标右键菜单。 Q:简述Intent的定义和用途. A:Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息 Intent也可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组 件会执行相关的动作,Intent为Activity、Service和BroadcastReceiver等组件提供 交互能力。Intent的用途:启动Activity和Service,在Android系统上发布广播消息. Q:简述Service的基本原理和用途。 A:Service是Android系统提供的Service(服务)组件,不直接与用户进行交互,能够长期在后台运行,在实际应用中,有很多应用需要使用Service,经常提到的例子就是MP3播放器。Service被系统终止,在系统资源恢复后Service 也将自动恢复运行状态,因此可以认为Service是在系统中永久运行的组件。Service除了可以实现后台服务功能,还可以用于进程间通信(Inter Process Communication,IPC),解决不同Android应用程序进程之间的调用和通讯问题。Q:简述R.java和AndroidManifest.xml文件的用途 A:AndroidManifest.xml是XML格式的Android程序声明文件,包含了Android系统运行Android程序前所必须掌握的重要信息,这些信息包括应用程序名称、图标、包名称、 模块组成、授权和SDK最低版本等R.java文件是ADT自动生成的文件包含对drawable、layout和values目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源。 Q:简述Android系统的4种基本组件Activity,Service,BroadcastReceiver和ContentProviser的用途。A: Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生界面事件。Android应用程序可以包含一个或多个Activity,一般需要指定一个程序启动时显示的Activity。几乎所有的Activity都是和用户进行交互的,Activity主要关注视图窗体创建,对用户表现为全屏窗体。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。 Service一般用于没有用户界面,但需要长时间在后台运行的应用,可公开Service的程序接口,供其他进程调用。 Service是Android实现程序后台运行的解决方案,用于执行不需要和用户交互且要求长期运行的任务。不能运行在一个独立的进程当中,而依赖创建服务时所在的应用程序进程。只能在后台运行,可以和其他组件进行交互。Broadcast Receiver用来接收广播消息的组件,不包含任何用户界面。可以启动Activity或者Notification通知用户接收到重要信息。广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。 ContentProvider是Android系统提供的一种标准的共享数据的机制,其他程序通过ContentProvider访问程序的私有数据.Android系统内部提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息,同一份数据,手机内没有更多的空间存储两次以上。针对这种情况,Android提供了Content Provider,它是不同应用程序间共享数据的标准API,统一了数据访问方式。包括添加、删除、修改和查询等操作。 Q:简述6种界面布局的特点 A:线性布局(LinearLayout)是一种重要的界面布局,在线性布局中,所有的子元素都按照垂直或水平的顺序在界面上排列,如果垂直排列,则每行仅包含一个界面元素,如果水平排列,则每列仅包含一个界面元素; 框架布局(FrameLayout)是最简单的界面布局,是用来存放一个元素的空白空间,且子元素的位置是不能够指定的,只能够放置在空白空间的左上角,如果有多个子元素,后放置的子元素将遮挡先放置的子元素; 表格布局(TableLayout)是一种常用的界面布局,通过指定行和列将界面元素添加 到表格中,网格的边界对用户是不可见的。表格布局支持嵌套,可以将表格布局放 置在表格布局的表格中可以在表格布局中添加其他界面布局,例如线性布局、相对 布局等; 相对布局(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面元素 与其他元素的相对位置关系,确定界面中所有元素的布局位置,能够最大程度保证 在各种屏幕尺寸的手机上正确显示界面布局 绝对布局(AbsoluteLayout)能通过指定界面元素的坐标位置,来确定用户界面的 整体布局绝对布局是一种不推荐使用的界面布局,因为通过X轴和Y轴确定界面元 素位置后,Android系统不能够根据不同屏幕对界面元素的位置进行调整,降低了 界面布局对不同类型和尺寸屏幕的适应能力 网格布局(GridLayout)将用户界面划分为网格,界面元素可随意摆放在网格中, 网格布局比表格布局(TableLayout)在界面设计上更加灵活,在网格布局中界面元 素可以占用多个网格,而在表格布局只能将界面元素指定在一个表格行(TableRow) 中,不能跨越多个表格行。

Android项目开发报告

目录 1 项目简介 (2) 2 开发环境 (2) 2.1Android 平台结构介绍 (2) 22 MVC 框架 (3) 3 功能介绍 (3) 3.1 登录 (3) 3.2 注册 (3) 3.3添加 (4) 3.4 查询 (5) 3.5主页面 (6) 4 数据库结构 (7) 4.1 数据表设计 (7) 5 项目结构 (7) 5.1 src 文件夹 (7) 52 gen 文件夹 (7) 5.3 libs 文件夹 (8) 5.4 bin 文件夹 (8) 5.5 res 文件夹 (8) 5.6 AndroidManifest.xml (8) 6 项目总结 (8)

Android 项目开发报告 1 项目简介 本次中软培训主要是关于android 的基本应用开发,培训的任务主要是开发一个与日常生活花费有关的现金日记账软件,由于时间紧张此软件只实现了登录、注册、添加、查询等功能,未涉及细节处理。此次项目开发主要是帮助大家培养理财观念,清楚直白的了解每笔前是怎么消费,何时消费掉的,利于节约一部分开支。 2 开发环境 2.1Android 平台结构介绍 Android 系统架构和其操作系统一样,采用了分层的架构。Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux 核心层。 开发人员可以完全访问核心应用程序所使用的API 框架。该应用程序的架构设计简化了组件的重用。任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。 应用程序。Android 会同一些核心程序包一起发布,包括日历、地图、浏览器等。所有的应用程序均是用Java 语言编写。 应用程序框架。这种框架可以使开发人员可以完全的访问核心程序所使用 的API 框架,简化了组件的使用。同时也使用户可以方便的替换程序组件。 系统运行库。An droid包含一些C/C++库,这些库能被An droid系统中不同的组件使用。一般情况下如果要将Android 移植到其他硬件去运行,只需要实现这部分代码即可。Android 也包括了一个核心库,该核心库提供了Java 编程语言核心库的大多数功能。 Linux 内核。Android 的核心系统服务依赖于Linux 2.6 内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。2.2 MVC 框架 MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制

相关主题
文本预览
相关文档 最新文档