android="">
android:
id="@+id/item1"
android:
icon="@drawable/a5"
android:
title="color1">
android:
id="@+id/item2"
android:
icon="@drawable/a6"
android:
title="color2">
android:
id="@+id/item3"
android:
icon="@drawable/a7"
android:
title="color3">
:
- American
- China
- England
- Chile
- Chad
#ff006e
#6eff00
#006eff
:
简述Android平台的特征有哪些。
答:
开放性、
挣脱运行商的束缚、
丰富的硬件选择、
无缝结合的Google应用
2.简述Android平台开发环境搭建的步骤。
答:
安装JavaJDK,
安装Eclipse,
安装AndroidSDK,
搭建Eclipse集成开发环境(IDE)、
配置ADT(AndroidDevelopmentTools)、
创建AVD(AndroidVirtualDevice)
3.简述Android系统架构从高到低的几个层次。
答:
四个层次,分别是:
应用程序层(Applications)、
应用程序框架层(ApplicationFramework)、
各种库(Libraries)和运行环境(Runtime)、
Linux内核(Linuxkernel)
4.应用程序的基本组件有哪些
答:
Activity、
Service、
ContentProvider、
BroadCastReceiver
根据应用程序的组件以及组件当前运行状态将所有的进程按重要性程度从高到低划分为几个
答:
可以划分为5个:
前台进程、
可见进程、
服务进程、
后台进程、
空进程
6.随着Activity的创建和销毁,可能会经历哪四种状态
答:
活动状态:
当前的Activity,位于Activity栈顶,用户可见,并且可以获得焦点暂停状态:
失去焦点的Activity,依然可见,即使在内存低的情况下,也不会被系统杀死
停止状态:
该Activity被其他Activity所覆盖,不可见,但是仍然保存所有的状态和信息。
当内存低的情况下,它将要被系统杀死销毁状态:
该Activity结束,或Activity所在的Dalvik进程结束
7.使用资源包括哪几种方法
答:
在代码里使用资源类;
在代码里调用资源类并实例化;
从其他资源类里引用
主要包含哪些功能
答:
说明application的java数据包,数据包名是application的唯一标识
描述application的component
说明application的component运行在那个process下
声明application的权限,用以访问受保护的API,以及与其他application进行交互
声明application的其他必备权限,用以与component进行交互
列举application运行时所需要的配置信息,这些声明信息只有在程序开发和测试时存在,在发布前被删除
声明application所需要的AndroidAPI的最低级版本
列举application所需要链接的库
9.应用程序的界面布局主要有哪些
答:
线性布局(LinearLayout)、
表格布局(TableLayout)、
相对布局(RelativeLayout)、
帧布局(FrameLayout)
应用程序的菜单有哪几种
答:
Android应用程序的菜单有3种:
选择菜单(OptionMenu)、
上下文菜单(ContextMenu)、
子菜单(SubMenu)
11.在界面上创建一个Spinner(含数据选项)的步骤。
答:
1、在布局文件中添加标记,并为其指定android:
entries属性
2、编写用于指定列表项的数组资源文件,并将其保存在res/values目录中,在该文件
中添加一个字符串组
12.现行布局中属性orientation的作用是什么
答:
用于设置布局管理器内组件的排列方式,其可选的值为horizontal和vertical,默认值为vertical
中实现事件处理的步骤
答:
(1)将事件监听器注册到事件源
(2)触发事件源上的事件
(3)生成时间对象
(4)触发事件监听器,事件被作为参数传入事件处理器
(5)调用事件处理器做出响应
14.简述Android平台提供了那些数据存储方法。
答:
Preferences、
File、
SQLite、
ContentProvider,
网络
15.简述Android模拟器中应用程序使用SD卡的步骤。
答:
(1)调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限
(2)调用Environment的getExternalDirectory()方法来获取外部存储器,也就是SD卡的目录
(3)使用FileOutputStream、FileInputStream、FileReader和FileWriter来读写SD卡
16.简述创建或打开一个SQLite数据库的方法有哪些
答:
openDataBase、
openOrCreateDataBase
17.使用ContentProvider来实现数据共享,都涉及到哪些辅助类。
答:
onCreate()、
insert()、
delete()、
update()、
query()、
getType()
18.开发ContentProvider的步骤
答:
(1)开发一个ContentProvider子类,并实现增、删、改、查等方法
(2)在里面注册该ContentProvider
()和bindService()启动服务的区别:
服务不能自己运行,需要通过调用startService()或bindService()方法启动服务。
这两个方法都可以启动Service,但是它们的使用场合有所不同。
1.使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。
使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。
2.采用startService()方法启动服务,在服务未被创建时,系统会先调用服务的
onCreate()方法,接着调用onStart()方法。
如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。
采用startService()方法启动的服务,只能调用()方法结束服务,服务结束时会调用onDestroy()方法。
()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。
这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。
如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。
如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。
20.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。
Handler简介:
一个Handler允许你发送和处理Message和Runable对象,这些对象和一个线程的
MessageQueue相关联。
每一个线程实例和一个单独的线程以及该线程的MessageQueue相关联。
当你创建一个新的Handler时,它就和创建它的线程绑定在一起了。
这里,线程我们也可以理解为线程的MessageQueue。
从这一点上来看,Handler把Message和Runable对象传递给MessageQueue,而且在这些对象离开MessageQueue时,Handler负责执行他们。
Handler有两个主要的用途:
(1)确定在将来的某个时间点执行一个或者一些Message和Runnable对象。
(2)在其他线程(不是Handler绑定线程)中排入一些要执行的动作
21.handler机制的原理
andriod提供了Handler和Looper来满足线程间的通信。
Handler先进先出原则。
Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper:
一个线程可以产生一个Looper对象,由它来管理此线程里的
MessageQueue(消息队列)。
2)Handler:
你可以构造Handler对象来与Looper沟通,以便push新消息到
MessageQueue里;或者接收Looper从MessageQueue取出)所送来的消息。
3)MessageQueue(消息队列):
用来存放线程放入的消息。
4)线程:
UIthread通常就是mainthread,而Android启动程序时会替它建立一个MessageQueue。
一、选择题
1android虚拟设备的缩写是(AVD)
2AndroidSDK目前支持的操作系统(DOS)
3Android开发工具插件(ADT)没有提供的开发功能(自动更新)
4AndroidSDK提供一些开发工具可以把应用软件打包成Android格式文件(APK)
5Android当中基本的所有的UI都是由(view)或者其子类实现的
6以下不是Android中调试项目的正确步骤(测试用例)
7下列不是Activity的生命周期方法之一的是(OnResume)
8以下可以做EditText编辑框的提示信息是(adroid:
hint)
9以下不是Activity启动的方法是(gotoActivity)
10以下不是手机操作系统的是(windowsvista)
二、填空题
1Android平台由操作系统,中间件,用户界面和应用软件组成的。
2Android平台提供了2D,3D的图形支持,数据库支持SQLite,并且集成了浏览器
3目前已知的可以用来搭建Android开发环境的系统有windows,Linux,Mac等4开发中推荐使用的IDE开发组合为IDE,eclipse,ADI来开发
5AndroidSDK主要以java语言为基础
6创建工程时需要填写的信息名称有工程名,包的名字,Activity的名字还有应用的名字
7是一个标准的压缩包,其内容包含的是编译后的class,包含了全部的API
三、简答题
1AndroidSDK中API的包结构的划分至少五个
,,,,,2Android软件框架结构自上而下可分为哪些层
应用程序(Application)、应用程序框架(ApplicationFramework)、各种库(Libraries)和Android运行环境(RunTime)、操作系统层(OS)
3Android应用程序的4大组件是什么
Activity、BroadcastIntentReceiver、Service、ContentProvider
4Android应用工程文件结构有哪些
源文件(包含Activity),文件,AndroidLibrary,assets目录res目录,drawble目录,layout目录,values目录,
5Android开发应用程序最有可能使用到的应用框架部分是哪些
一组View(UI)组件,ContentProviders,ResourceManger,NotificationManger,ActiviyManger
6Android底层库包含哪些
系统C库,媒体库,SurfaceManager,LibWebCore,SGL
四、编程
1实现点击一个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核心代码
Bundlebundle=newBundle();
(“store”,”数据来自Activity1”);
IntentmIntent=newIntent();
(bundle);
setResult(RESULT_OK,mIntent);
finish();
2手动绑定列表控件的核心代码
list
listViewlistview=null;
data=newArrayList
Mapitem;
item=newHashMap();
(“姓名”,“张三小朋友”);
(“性别”,“男”);
(item);
item=newHashMap();
(“姓名”,“王五同学”);
(“性别”,“男”);
(item);
listView=newListView(this);
SimpleAdapteradapter=newSimpleAdapter(this,data,
newString[]{“姓名”,”性别”},newint[]{);
(adapter);
setContentView(listView);
实验例题:
SharePreference
packageclassMainActivityextendsActivityimplements{
privatestaticfinalStringFILENAME="huanghuai";
privateEditTextusername=null,userage=null;
privateButtonsubmit=null;
privateButtonshow=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
(savedInstanceState);
setContentViewusername=(EditText)findViewByIduserage=(EditText)findViewByIdsubmit=(Button)findViewByIdshow=(Button)findViewById(this);
(this);
}
@Override
publicvoidonClick(Viewv){
SharedPreferencesshare=(FILENAME,;
switch()){
caseeditor=();
Stringname=().toString().trim();
Stringage=().toString().trim();
("name",name);
("age",(age));
();
break;
case("name","没有姓名信息"));
("age",0)));
break;
default:
break;
}
}
}
OptionMenu
packageclassMainActivityextendsActivity{
privateImageViewimageView=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
(savedInstanceState);
setContentViewimageView=(ImageView)findViewById}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
getMenuInflater().inflatemenu);
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItemitem){
intitemId=();
if(itemId=={
Resourcesresources=getBaseContext().getResources();
DrawablebtnDrawable=(btnDrawable);
}
return(item);
}
}
ListView
packageclassMainActivityextendsActivity{
privateListViewlistView=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
(savedInstanceState);
listView=newListView(this);
(newArrayAdapter(this,
(newItemClickEvent());
setContentView(listView);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
getMenuInflater().inflatemenu);
returntrue;
}
privateListgetData(){
Listdata=newArrayList();
("Testdata1");
("Testdata2");
("Testdata3");
("Testdata4");
returndata;
}
protectedclassItemClickEventimplementsOnItemClickListener{
@Override
publicvoidonItemClick(AdapterView<>arg0,Viewarg1,intarg2,longarg3){
}
}
}
菜单的创建
packageclassMainActivityextendsActivity{
ListViewlv=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
(savedInstanceState);
lv=newListView(this);
ArrayAdapter