Android考试知识点考试

Android考试知识点考试
Android考试知识点考试

考试知识点(Android闭卷考试)

1.理解Android常见的几种布局。

几种布局的高和宽,制定

LinearLayout,线性布局,布局中的控件在线性方向上依次排列。默认控件水平方向排列。

android:orientation=”horizontal”

android:orientation=”vertical”

注意:

当是水平方向排列,控件宽度不能设置为

android:layout_width="match_parent"

否则控件会把水平方向沾满,其他控件无法会控件覆盖(无法放置)

当是垂直方向,内部控件不能将android:layout_height="match_parent"指定为match_parent

android:layout_weight="1",使用比例方式来指定控件的大小

RelativeLayout,相对布局,是通过相对定位的方式让布局中控件可以出现在布局的任何位置。

内部控件,三种属性,

属性值是true或false

android:layout_centerHrizontal 水平居中,

属性值是”@id/*“android:layout_below 在某元素的下方

属性值是数值

是通过添加TableRow、其他组件来控制表格的行数和列数

GridLayout是Android4.0之后新增的布局管理器,因此正常情况下需要在Android 4.0 之后的版本中才能使用,如果希望在更早的版本中使用的话,需要导入相应的支撑库(v7包的gridlayout包)。

Grid Layout 网格布局,和前面所讲的 Table Layout(表格布局) 有点类似,不过他有很多前者没有的东西,因此也更加好用:

- 可以自己设置布局中组件的排列方式

- 可以自定义网格布局有多少行、列

- 可以直接设置组件位于某行某列

- 可以设置组件横跨几行或者几列

Absolute Layout 它不提供任何布局控制,而是由开发人员自己通过X、Y坐标来控制组件的位置。运行Android应用的手机往往千差万别,屏幕大小、分别率、屏幕密度等都可能存在较大的差异,使用绝对布局的话很难做机型适配--已经被废弃

2.理解Android应用程序开发过程中,常见的四种设计模式及各自的使用场合。ListView-Adapter、Builder-Dialog、Factory-选项卡、Listener-事件监听。

1适配器模式:

简介:将一个类的接口转换成客户希望的另外一个接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。不同的数据提供者使用一个适配器来向一个相同的客户提供服务。

举例:ListView或GridView的Adapter。

2建造者模式:

简介:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的显示,但其根本还是不变。

举例:AlertDialog.Builder.AlertDialog.Builder,使用该Builder来构建复杂的AlertDialog对象

工厂模式:

定义一个用于创建对象的接口,让子类决定将哪一个类实例化。

外部不需要关心工厂是如何创建一个复杂产品的过程

示例:BitmapFactory位图工厂,专门用来将指定的图片转换为指定的位图Bitmap。

监听器模式

事件源经过事件的封装传给监听器,当事件源触发事件后,监听器接收到事件对象可以回调事件的方法.Listener-事件监听

观察者模式:定义对象间是一(Subject)对多(Observer)的依赖关系,当一个对象发生变化时,其它依赖该对象的对象都会收到通知,并随着变化。广播机制就是观察者模式

ListView和BaseAdapter组合时,当BaseAdapter的item改变时,我们经常会调用notifyDataSetChanged(),通知Listview刷新

3.Android中可支持网页的缩放的视图(View)及其功能

在Android系统中,内置了一款高性能的浏览器,其内核就是WebKit,WebView 网页视图,就是在这个基础上封装的一个控件,我们可以直接用这个控件在应用程序内去显示Web页面,直接用HTML文件做为布局文件,可以和JavaScript 交互调用。

显示和渲染web页面

(1).直接显示网页

设置在当前应用中打开网页,如果不设置的话会使用手机浏览器打开网页

mWebView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

view.loadUrl("https://https://www.360docs.net/doc/ea12867433.html,/");

return true;

}

});

mWebView.loadUrl("https://https://www.360docs.net/doc/ea12867433.html,/");

(2)和js交互

设置支持Javascript

WebSettings settings = webView.getSettings();

settings.setJavaScriptEnabled(true);

(3)可以利用html做界面布局

4.理解View和ViewGroup的用途及两者之间的关系。

继承结构:

View是ViewGroup的父类类。View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的.

View中所有的子类成为widgets,viewgroup的子类成为layout。

View和ViewGroup之间采用了组合设计模式,可以使得“部分-整体”同等对待。ViewGroup 作为布局容器类的最上层,布局容器里面又可以有View和ViewGroup。

对于setContentView(https://www.360docs.net/doc/ea12867433.html,yout的xml文件)方法,Activity其实不是显示视图(直观上感觉是它),实际上Activity调用了PhoneWindow的setContentView()方法,然后加载视图,将视图放到这个Window上,而Activity其实构造的时候初始化的是Window (PhoneWindow),Activity其实是个控制单元,即可视的人机交互界面。

Activity是一个工人,它来控制Window;Window是一面显示屏,用来显示信息;View就是要显示在显示屏上的信息,这些View都是层层重叠在一起(通过infalte()和addView())放到Window显示屏上的。而LayoutInfalter就是用来生成View的一个工具,XML布局文件就是用来生成View的原料。

(2).Activity、Window、View之间的关系:

Activity是Window和View之间的桥梁,将View的内容信息显示在Window 窗口上面。

5.理解Android网络编程中,常见的数据传输格式。

网络传输中最常见的有xml和json ,还有protocol buffers,gzip,Thrift

Xml通过Pull,SAX和Dom方式解析

Json用JSONObject和GSON解析。

Protocol Buffers 一种数据描述语言,类似于XML能够将结构化数据序列化——类似于XML,但更小,更快,更简单

经常用到json、xml等格式的数据,这些数据在传输前可以进行压缩,这时候就会涉及到一种压缩格式—Gzip。Gzip的压缩比率非常大,有的甚至能达到70%以上,可以大大减少传输内容,提高用户的传输速度,进而提高用户的体验

6.理解基本组件Activity的相关知识(如重载方法等)。

Android应用有四大组件Activity、Service、BroadcastReceiver、ContentProvider ContentProvider组件:用于Android应用之间实现实时的数据交换。常和ContentResolver一起使用

BroadcastReceiver组件:广播消息接收器,类似于事件编程中的监听器,但是不同的是普通的事件监听器监听的事件源是程序中的对象,而BroadcastReceiver 监听的事件源是Android应用程序中的其它组件。

Service组件: 通常位于后台运行,一般不需要与用户交互,所以没有图形界面。Service组件运行起来后会有独立的生命周期,它通常用于为其他组件提供后台服务或监控其他组件的运行状态

(1)activity是一种可以包含用户界面的组件,主要用于和用户进行交互

表现形式是一个屏幕,功能是显示界面,消息传递

整个生命周期:onCreate()-onDestroy()

可见的生命周期:onStart()-onStop()

前台的生命周期:onResume()-onPause()

运行,暂停(不在栈顶,但可见),停止(完全不可见,有可能因内存不够被回收),销毁(从栈中移除

覆盖了activity生命周期的每一个环节

onCreate():当activity是被创建时候,会自动运行该方法。该方法做一些初始化动作,比如加载布局,绑定时间等。

onStart():活动在有不可见变为可见的时候调用。

onResume():当activity开始与用户交互(获得焦点)时,会调用onResume,此是活动一定位于返回栈的栈顶,并处于运行状态。

onPause():当系统准备启动或恢复另一个活动时调用。此时活动处于暂停状态(当一个活动不再处于栈顶的位置,但仍然可见,弹出一个对话框或者一个不能占满屏幕的活动都会导致前一个活动处于暂

停状态)通常会在这个方法中释放掉一些占用cpu的资源

onStop():当这个activity完全看不见的时候,会调用onStop方法。以下三种情况都会使这个activity调用onStop()方法,第一种是一个新的activity被执行,第二种是一个已经存在的activity被切换到最前端,第三种是这个activity要被销毁。

onRestart():把activity从停止状态变为运行状态,活动被重新启用。

onDestroy():当activity销毁前会调用该方法,之后变为销毁状态。理解何时需要在Activity中重写方法onActivityResult?

当使用startActivityForResult()(在第一个活动中)方法启动另一个Activity时,需要在第一个活动中重写onActivityResult()方法,获得被启动Activity返回的结果。

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

startActivityForResult(intent,int 请求码);

重写

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

String result = data.getExtras().getString("result");//得到新Activity 关闭后返回的数据

Log.i(TAG, result);

}

在第二个活动中:点击事件中

//数据是使用Intent返回

Intent intent = new Intent();

//把返回数据存入Intent

intent.putExtra("result", "My name is linjiqin");

//设置返回数据

OtherActivity.this.setResult(RESULT_OK, intent);

//关闭Activity

OtherActivity.this.finish();

7.理解在Intent传递数据时使用的几种数据类型。

基本数据类型

Serializable、将一个对象序列化后转换成可以传输的状态,序列化的方法是让类自身继承Serializable接口

Person p=new Person();

p.setname();..

Intent intent=new Intent(源活动,目标活动.class);

intent.putExtra(“名字”,p);

接受数据:Person p2=getIntent().getSerializableExtra(“名字);

Parcelable,同样需要类继承Parcelable接口,但需要在person类中重写接口中两个方法,必须有一个实现了Parcelable.Creator接口的静态常量成员字段。

接受数据方法getIntent.getParcelableExtra(“名字);

CharSequence、CharSequence接口,实现了这个接口的类有:CharBuffer、String、StringBuffer、StringBuilder这个四个类。所以处理String或者StringBuffer的类就不用重载。Bundle:一种存放字符串和Parcelable类型数据的map类型的容器类,通过存放数据键(key)获取对应的各种类型的值(value),而且必须通过键(key)获取。

I n t e n t i n t e n t=n e w I n t e n t();

i n t e n t.s e t C l a s s(a c t i v i t y1.t h i s,a c t i v i t y2.c l a s s);//描述起点和目标

B u n d l e b u n d l e=n e w B u n d l e();//创建B u n d l e对象

b u n d l e.p u t S t r i n g("s o m e t h i n g","A

c t i v i t y1发来的数据");//装入数据

i n t e n t.p u t E x t r a s(b u n d l e);//把B u n d l e塞入I n t e n t里面

s t a r t A c t i v i t y(i n t e n t);//开始切换

A c t i v i t y2接收数据

I n t e n t i n t e n t=t h i s.g e t I n t e n t();//获取已有的i n t e n t对象

B u n d l e b u n d l e=i n t e n t.g e t E x t r a s();//获取i n t e n t里面的b u n d l e对象

s t r i n g=b u n d l e.g e t S t r i n g("s o m e t h i n g");//获取B u n d l e里面的字符串

8.理解Android中包含哪几个标准的“选择”部件(View)。

?RadioButton单选按钮(同一组RadioButton放在一个RadioGroup中)?CheckBox复选框

?Spinner下拉列表框

?DatePicker日期选择组件

?TimePicker事件选择组件

?NumberPicker数值选择组件

9.理解Android工程中哪些目录中的文件是由Eclipse自动编译生成。

src、存放的是该项目的源代码

bin、编译后自动生成目录。二进制文件,包括class、资源文件、dex、apk 等

gen、自动生成的文件目录。该目录下的文件全部都是ADT自动生成的,一般并不需要去修改,实际上该目录下只定义了一个R.java文件,该文件相当于项目的字典,为项目中用户界面、字符串、图片等资源都会在该类中创建其惟一的ID

res存放应用程序中经常使用的资源文件等。

9.理解SQLite的一般用法。

SQLite是一款轻量级关系型数据库。安卓内置SQLite。

SQLiteOpenHelper:

SQLiteOpenHelper是是一个辅助类。这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase()或者 getReadableDatabase()方法的时候,创建或打开一个现有的数据库,并返回一个SQLiteDatabase对象用于对数据库进行读写操作。当数据库不可写入(磁盘已

满),getReadabelDatabase()返回的对象将以只读的方式打开数据库,getReadableDatabase()出现异常。构造方法:

public MyDatagbaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {this,数据库名.db,null,版本1

super(context, name, factory, version);

}

SQLiteOpenHelper 是一个抽象类,我们通常需要继承它,并且实现里面的2个抽象方法:

1.onCreate(SQLiteDatabase db)

db.execSQL(sql语句,建立表)

在数据库第一次生成(调用getdat..和getWriteabledatabase方法)的时候会调用这个方法,也就是说,只有在创建数据库的时候才会调用,当然也有一些其它的情况,一般我们在这个方法里边生成数据库表。

2. onUpgrade(SQLiteDatabase,int,int)

当数据库需要升级(修改表,创建新表,数据备份,删除表)的时候,Android系统会调用这个方法。比如增加一张表。

这里要db.execSQL(sql语句)如果是建的表已经存在,就要先删除,或不建。

3. onOpen(SQLiteDatabase)非抽象:

当打开数据库时的回调函数。

SQLiteDatabase sqlitedatabase=sqliteDBHelper.getWritableDatabase()

插入操作

ContentValues cv = new ContentValues(); cv.put(COLUMN_NAME,

person.getName()); cv.put(COLUMN_AGE, person.getAge()); //当cv参数为空或者没有内容的时候,insert会失败,为了防止这种情况发生, // 要在第二个参数设置一个列名,当要插入的行为空行时,将指定的列名值设置为null

sqliteDataBase.insert(TABLE_NAME, null, cv);

更新:

sqliteDataBase.update(TABLE_NAME, cv, COLUMN_ID + "=?", new

String[]{String.valueOf(person.getId())});

第三个和第4个参数不指定,默认更新所有行

删除

sqliteDataBase.delete(TABLE_NAME, COLUMN_ID + "=?", new

String[]{String.valueOf(id)});

,后面的两个参数不指定的话默认删除所有行

或者直接用sql来操作sqliteDataBase.execSQL(sql语句,new String[]{参数...});

11. 理解正确设置onClickListener所需要的几个基本步骤。

View.OnClickListener:单击事件的监听器必须实现的接口

基于监听的事件处理模型:

?获取普通界面组件(事件源),也就是被监听的对象

?实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个OnClickListener接口

?调用事件源的setOnClickListener()方法注册事件监听器

常见的实现方法:

a.匿名内部类

xml布局文件中添加组件,设置组件id;

在activity中获取对应id的组件,用setOnClickListener(new OnClickListener(){……})的方式绑定控件与事件监听器,在内部类中重载onClick()方法,实现想要的功能。

a的优化方案:使用内部类,还有外部类,但很少用

在Activity中定义一个内部类继承监听器接口,或new一个该监听器的对象setOnClickListener(对象实例)

xml布局文件中添加组件,设置组件id;

在activity中编写内部类实现OnClickListener,实现onClick()方法。

绑定按钮与事件监听器:button.setOnClickListener(内部类的对象); btnshow.setOnClickListener(new BtnClickListener());

}

//定义一个内部类,实现View.OnClickListener接口,并重写onClick()方法

class BtnClickListener implements View.OnClickListener

{

@Override

public void onClick(View v) {

Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();

}

}

c.直接绑定到标签利用布局文件中的onClick属性

xml布局文件中添加组件,设置onClick属性;

Java代码中实现与onClick属性值同名的方法名。

d.Activiry作为事件监听器。整个Activity实现onClickListener接口,适用于控件量多的情况。xml布局文件中添加组件,设置组件id;

Activity实现onClickListener接口,即实现onClick方法,完成各组件的功能。

在onCreate()中绑定控件与事件监听器:

12.理解TabHost, TabSpec, TabWidget等基本类的用法。

TabHost组件可以在界面中存放多个选项卡,必须有TabWidget与FrameLayout组件

TabHost组件中必备的两个组件

TabWidget: 该组件就是TabHost标签页中上部或者下部的按钮, 可以点击按钮切换选项卡;直接在tabhost中加

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

不加,即使add了选项卡,也无法区分开选项卡

TabSpec: 代表了选项卡界面, 添加一个TabSpec即可添加到TabHost中,每一页是内容+标签,内容由FrameLayout显示

定义布局: 在XML文件中使用TabHost组件, 并在其中定义一个FrameLayout选项卡内容;

b. 继承TabActivity: 显示选项卡组件的Activity继承TabActivity;

c. 获取组件: 通过调用getTabHost()方法, 获取TabHost对象;

d. 创建添加选项卡: 通过TabHost创建添加选项卡;

TabHost tabs = (TabHost) findViewById(R.id.tabhost);

tabs.setup();

TabHost.TabSpec spec = tabs.newTabSpec("tag1");

spec.setContent(R.id.tab1);

spec.setIndicator("Clock");

tabs.addTab(spec);

其中tabs.newTabSpec("tag1")用来new一个tab,同时标记这个tab的tag

setContent()用来处理点击这个tab后的动作,可以是这个Activity下的一个组件,如setContent(R.id.tab1)布局文件,也可以是一个intent,比如:setContent(new Intent(this, SubTab.class))

setIndicator()用来标记这个tab的名字,可以是setIndicator("Clock"),也可以包含其他的属性,如图片:setIndicator( "商场",getResources().getDrawable(android.R.drawable.arrow_down_float))

tabs.addTab(spec)将这个tab添加如TabHost

13.理解AsyncTask在Android耗时操作中的使用方法。

AysncTask是谷歌封装的实现异步操作,用于执行耗时任务并在UI线程中更新结果的抽象类。背后的实现原理就是异步消息机制(Handler)

AsyncTask是一个轻量级异步类,用户可以直接继承AsyncTask,在类中实现一步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。

使用方法:

继承AsyncTask并且制定传入参数类型、描述过程类型以及返回值类型,这些类型均是泛型

需要重写的4个方法:

onPreExecute():这个方法是在异步加载进行前执行的,用于界面上的初始化操作,必须现实一个进度条对话框。

doInBackground(Params...):只有这个方法是在子线程中进行的,所有下载或者加载等耗时的操作,都可以在这里执行。任务一旦完成,就可以通过return语句将任务的执行结果返回。如果AsyncTask的第三个泛型参数指定的是void,就可以不用返回。更新UI操作,需要调用publishProgress(传递的参数)方法来完成。

onProgressUpdate(接收的参数):这个方法是在doInBackground方法中执行了publishProgress()方法的时候执行,publishProgress()方法是向此方法传递一些用于描述过程的参数,比如用Integer来描述下载的进度等,实现对UI进行操作。

onPostExecute(Result):这个方法是在doInBackground()方法执行完毕return之后执行,根据return的result类型来判断进行一些UI操作。比如提醒任务结果,关掉进度条对话框等

以上的方法中,只有doInBackground()这个方法是在子线程中执行,其他都是在UI线程,所以可以直接对UI进行更新。

New DownloadTask().execte();启动这个任务

// 这里定义的一个AsyncTask子类,输入参数类型为空,过程指示参数为整型,异步返回类型为布尔28class DownLoad extends AsyncTask {

Asynctask的不足之处:

1.AsyncTask可能存在新开大量线程消耗系统资源和导致应用FC的风险

2.AsyncTask一旦执行了doInBackground,就算调用取消方法,也会将doInBackground里面的代码执行完毕,才会停止。

3.调用了AsyncTask#execute()后,AsyncTask会把任务交给线程池,由线程池来管理创建运行线程。线程池不经维护,当大量异步发生时,导致线程池满了,会出异常。

14.理解Android客户端程序与后端Web服务器应用程序之间的通信流程。

客户端向服务器发送一条HTTP请求,服务器接收到请求后会返回数据给客户端,然后客户端对数据进行解析。

请求方式 HttpURLConnection和HttpClient,但后者被弃用在6.0后。

但请求数据是在子线程中,而数据更新是在UI主线程中

必须在主线程中开启一个线程,并且使用Handler这个对象来实现数据的异步请求.然后当请求响应完成之后才会在界面中更新数据。

1.手机客户端向Web应用服务器发送请求信息

1)首先引用所需要的各种API,比如http,io等

2)定义访问网站的URL

(3)创建HttpURLConnection对象,该对象的主要作用是将Android手机端的数据提交给Web应用服务器

3)设置数据编码方式Android手机在将准备好的数据发送到Web服务器之前,

需要对数据的编码进行规定,这样服务器在接收到这些数据后,就会根据发送过去的文字编码处理和显示。

4)提交HttpURLConnection对象和获取服务器HttpResponse响应数据完成前面

的工作,就该将数据提交给Web应用服务器了,在应用服务接收Android 手机提交的数据后,经过处理,将要返回(响应)给Android手机的数据打包到一个HttpResponse对象中,发回给手机。

2.手机客户端接受响应数据

获取响应服务的数据从Web服务器响应到手机终端的数据一般打包在一个字节数组中,关键是这个字节数组中可能包含了各种不同的数据类型,为此,需要采取Java数据流和过滤流的方法从字节数据中取出各种类型的数据

15.理解MessageQueue的工作原理。

是消息队列的意思,存放所有通过Handler发送的消息。这部分消息会一直存在消息对列中,等待被处理,每个线程只有一个MessageQueue对象MessageQueue是比较低层的类,是持有Message(在Looper中派发)的一个链表,但Message不是直接添加到MessageQueue中的,而是通过与Looper 相关联的Handler来进行的。在当前线程中可以通过调用Looper.myQueue()方法来获取当前线程的MessageQueue

MessageQueue,主要包含2个操作:插入和读取。读取操作会伴随着删除操作,插入和读取对应的方法分别为enqueueMessage和next,其中enqueueMessage的作用是往消息队列中插入一条消息,而next的作用是从消息队列中取出一条消息并将其从消息队列中移除。虽然MessageQueue叫消息队列,但是它的内部实现并不是用的队列,实际上它是通过一个单链表的数据结构来维护消息列表,单链表在插入和删除上比较有优势。Message:是线程之间传递的消息,在内部携带少量信息,用于不同线程间交换数据。what,arg1,arg2,obj携带Object对象

Handler:

处理者的意思,主要用于发送和处理消息,

Handler类的作用主要有两种:

1.在新启动的线程中发送消息。sendMessage().

2.在主线程(UI线程)中获取,处理消息。handleMessage()方法

Looper是每个线程中MessageQueue的管家,调用Looper的loop()方法,就会进入一个无限循环中,然后每当MessageQueue存在一条消息,就会将他取出,并传递到Handler的handleMessage()方法。每个线程也只会有一个Looper对象

异步消息的处理机制:

(1)主线程创建Handler对象,并重写handleMessage()方法。

(2)当子线程需要进行UI操作,就创建一个Message对象,并通过Handler把这条消

息发送出去。之后,这条消息会被添加到MessageQueue中等待被处理。

(3)而Looper一直尝试从MessageQueue中取出待处理的消息,如果有,就分发到Handler的handleMessage()方法处理。由于Handler对象是在主线程创建,所以可以更新UI

(4)

Looper是每个线程中MessageQueue的管家,在loop()方法被调用后就会处于无限循环中,每当发现队列中有一个消息,就会取出,放进handleMessage()方法中处理16.理解SharedPreferences的使用方法。

SharedPreferences是Android平台上一个轻量级的存储类,以键值对形式来保存应用的一些常用配置。

它是使用键值对的方式存储数据。存入什么类型,读取出来就是什么类型

1得到SharedPreferences对象

2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。

3、向SharedPreferences.Editor对象中添加数据。

4、调用commit方法将添加的数据提交。

Context.getSharedPreferences(文件名称,操作模式)

文件名称不存在就会创建一个,操作模式有两种:

MODE_PRIVATE:默认操作模式,直接在把第二个参数写0就是默认使用这种

操作模式,这种模式表示只有当前的应用程序才可以对当前这个SharedPreferences文件进行读写。

MODE_MULTI_PRIVATE:用于多个进程共同操作一个SharedPreferences文件。

注:MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE这两种模式已经在android 4.2版本以后废弃了。

方法2:

Activity.getPreferences(文件名,操作模式)

使用这个方法会自动将当前活动的类名作为SharedPreferences的文件名,底层调用的是下面这个方法

Activity.getSharedPreferences(String name, int mode)我们也可以直接调用getSharedPreferences这个方法,传入自定义的名字。

方法3

PreferenceManager.getDefaultSharedPreferences(Context)

使用这个方法会自动使用当前程序的包名作为前缀来命名SharedPreferences 文件

调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。

SharedPreferences.Editor editor =

getSharedPreferences(“data”,MODE_PRIVATE).edit();

向SharedPreferences.Editor对象中添加数据。editor.putString(“name”,”Lily”); //以键值对形式存储

editor.putInt(“age”,”20”); //以键值对形式存储

editor.putBoolean(“married”,false); //以键值对形式存储

4、调用commit方法将添加的数据提交。

https://www.360docs.net/doc/ea12867433.html,mit();(apply()方法也行

Commit立即写入

两者区别:apply没有返回值而commit返回boolean表明修改是否提交成功

2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。

3. apply方法不会提示任何失败的提示。

SharedPreferences取数据:SharedPreferences

s=getSharedPreferences(“data”,MODE_PRIVATE);

S.getString(“键值名”)等get方法;

理解AndroidManifest.xml文件的作用,以及里面常见的配置项?AndroidManifest.xml文件:Android项目的系统清单文件配置Android应

用的名称、图标、访问权限等属性,并且Activity、Service、ContentProvider、BroadcastReceiver四大组件都要在这里进行配置。

?是应用的入口文件,应用清单文件,包含app运行的必要的组件,权限,以及一些相关信息。这个清单就是把这些基本信息提交给安卓系统,app 才能运行。Android应用程序在运行时,在需要跳转到、或者需要用到组件找不到时报错

Application:一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性。

用于声明Instrumentation测试类来监控Android应用的行为并应用到相关的功能测试中

列出应用程序必须链接的外部库

Activity活动组件(即界面控制器组件)的声明标签

Service服务组件的声明标签,用于定义与描述一个具体的Android服务

Boardcast Receiver广播接收器组件的声明标签

用于指定Android应用中所需要使用的SDK的版本

//ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件

Android开发的核心知识

想要学习移动应用的开发,除了必备的知识要掌握好之外,更多的是要掌握一些核心的基础知识,并且是能够起到关键性作用的知识点,必须是要了解清楚,如果你也是在学习Android开发,下面的核心基础或者对你有一定的帮助! 1.ListView的引入 为什么要采用listview?其实是在数据量过于庞大时,传统的存储方式它是会占用机器大量内存,最终导致OOM异常(内存溢出),listview的出现将会是有效的解决这个弊端的出现。 重点来了listview如何使用呢? res/layout布局文件中定义listview src的java代码里面关心控件findviewbyid(R.id.listview); 创建适配器对象,适配器继承baseAdapter接口 2.构造方法 getCount();控制listview的条目数 getView();得到当前条目视图 View.inflate();布局填充器 设置适配器:setAdapter(adapter); 设置listview列表项的点击事件:setOnClickLinsstener();

通知listview更新数据:adapter.notifyDataSetChanged(); 3.对话框的使用 *普通对话框 *单选对话框 *多选对话框 *进度对话框 *进度条对话框 *自定义对话框 布局填充器:Viewview=View.inflate(Context,https://www.360docs.net/doc/ea12867433.html,yout.dialog,null); 核心API:dialog.setView(view); 4.常见的一些适配器的使用 *数组适配器:ArrayAdapter *简单适配器:SimpleAdapter 5.数据库的常见的事务 为什么需要需要定义数据库事务?最主要的还是为了保证多条操作语句同步执行 6.数据库事务执行流程 db.beginTransaction();开启事务 db.setTransactionSuccessful();设置事务执行成功 db.endTransaction();结束事务 7.样式和主题 样式的作用在单独的UI控件上面 主题的作用它是在activity或者application上 以上的这些功能控件、数据库等这些是开发中必备的功能,在开发中只要这些基本的核心知识都掌握了,那么这对你接下里的进一步开发是比较有帮助的。

Android期末测试题(附带答案)

一、选择题 1、下列哪项不是Android四大组件( C ) A.Seivice B. Activity C. Handler D. Content Provider 2、Android是如何组织Activity的( B ) A.以堆的方式组织Activity B. 以栈的方式组织Activity C. 以树形方式组织Activity D. 以链式方式组织Activity 3、关于线程说法不正确的是( B ) A. 在 android 中,我们可以在主线程中,创建一个新的线程 B. 在创建的新线程中,它可以操作 UI 组件 C. 新线程可以和 Handler 共同使用 D. 创建的 Handler 对象,它隶属于创建它的线程 4、下列关于内存回收的说明,哪个是正确的(B ) A.程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 D.内存回收程序可以在指定的时间释放内存对象 5、设置xml布局文件中的字体大小一般用什么单位( c ) A.dp B. px C. sp D. pt 6、关于service生命周期的onCreate()和onStart()说法正确的是( D ) A.当第一次启动的时候先后调用onCreate()和onStart()方法 B.当第一次启动的时候只会调用onCreate()方法 C.如果service已经启动,将先后调用onCreate()和onStart()方法 D.如果service已经启动,只会执行onStart()方法,不再执行onCreate()方法 7、Android项目工程下面的assets目录,以下说法正确的是( A ) A.这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B.主要放置多媒体等数据文件 C.主要放置图片文件 D.放置字符串,颜色,数组等常量数据 8、在android中使用SQLiteOpenHelper这个辅助类,生成一个可操作的数据库,调用的方法是( A )A.getReadableDatabase() B.getDatabase() C.getEnbleDatabase() D.createDateBase() 9、Activity从可见状态变为半透明遮盖状态时,生命周期中哪个方法被调用( B )

Android知识体系思维导图

Android Activity Visible Fragment addview setContentView startActivity startActivityForResult requestCode ResponseCode setResult(intent, response code) onActivityResult Service start onCreate() onStartCommand() onDestroy bind onCreate() onBind() onUnbind() onDestroy ServiceConnection onServiceConnected() &!null binder onServiceDisconnected() been killed crash BroadcastReceiver XML manifest intent-filter Code registerReceiver(receiver, filter)unRegistReceiver() code sendBroadcast(intent) SendOrderedBroadcast

Android应用开发基本知识点汇总

Android应用开发基本知识点汇总 Activity 一生命周期 4种状态 running / paused / stopped / killed 生命周期 Activity启动 onCreate -> onStart -> onResume 点Home返回主界面 onPause -> onStop 再次回到原Activity onRestart -> onStart -> onResume 退出Activity onPause -> onStop -> onDestroy 进程优先级前台/可见/服务/后台/空 二任务栈 三启动模式 standard singleTop 栈顶复用 singleTask 栈内复用 singeInstance 四scheme跳转协议 服务器可以定制化告诉App跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面 Fragment 一第五大组件 为什么是第五大组件 Fragment相对Activity更节省内存,切换更舒适Fragment加载到Activity的两种方式 静态加载xml 动态加载fragmentTransaction.add(id, fragment, “name”); .commit; FragmentPagerAdapter与FragmentStatePagerAdapter

FragmentStatePagerAdapter在切换时回收内存,适合页面较多的情况FragmentPagerAdapter并没有回收内存,只是detach了Activity 二生命周期 onAttach -> onCreate -> onCreateView -> onViewCreated -> onActivityCreated -> onStart -> onResume -> onPause -> onStop -> onDestroyView -> onDestroy -> onDetach 先创建Activity后创建Fragment,先销毁Fragment后销毁Activity 三Fragment之间的通信 Fragment调用Activity getActivity Activity调用Fragment 接口回调 Fragment调用Fragment方法findFragmentById 四FragmentManager replace add remove Service 一应用场景,与Thread区别 Service是什么后台长时间运行,没有用户界面,运行在主线程,不能有耗时操作 Service与Thread区别 Activity难以与Thread交互,尤其当Activity销毁以后 二开启Service的两种方式 StartService onCreate -> onStartCommand -> onBind -> onDestroy onStartCommand return START_STICKY;

Android考试题库

一、单选题(共33题,共62 分) 1、(2 分) WebView 中可以用来处理js 中警示,确认等对话框的是(C) A. WebSettings B.WebViewClient C.WebChromeClient D.WebViewChrome 2、(2 分) Android 解析xml 的方法中,将整个文件加载到内存中进行解析的是?(C) A 、SAX B 、PULL C 、DOM D 、JSON 3、(2 分)以下属于调用摄像头硬件的权限的是:(A ) A. B. C. D. 4、(1 分)使用Android 系统进行拍照用到的类有:(D) A. SurfaceView B. SurfaceHolder C.Callback D. Camera 5、(2 分)LocationManager 获取位置信息的途径下列说法不正确的是(B ) A, GPS 定位更精确,缺点是只能在户外使用 B, NETWORK通过基站和Wi- Fi信号来获取位置信息,速度较慢,耗电较少。 C, 获取用户位置信息,我们可以使用其中一个,也可以同时使用两个。 D, GPS 定位耗电严重,并且返回用户位置信息的速度远不能满足用户需求。 6、(2 分)在开发AppWidget 窗口小部件时, 需要继承(D)类 A,AppWidgetReceiverB,AppWidgetConfigure C,AppWidgetManagerD,AppWidgetProvider 7、(4 分)在AsyncTask 中下列哪个方法是负责执行那些很耗时的后台计算工作的(C) A,runB,executeC,doInBackgroundD,onPostExecute 8、(2 分)如果希望自定义TabHost 标题部分的显示内容需要使用下列哪个方法(B)finalTabHosttabHost = getTabHost(); A, tabHost.addTab(tabHost.newTabSpec("tab1") B, setIndicator C, setContent(); D, setView 9、(2 分)使用HttpUrlConnection 实现移动互联时, 设置读取超时属性的方法是(B) A、setTimeout() B 、setReadTimeout() C、setConnectTimeout() D 、setRequestMethod() 10、(1 分)使用HttpURLConnection 的Get 方式请求数据时, 下列哪个属性是必须设置的(B) A, connection.setDoOutput(true) B, connection.connect()

Android手机分辨率基础知识(DPI_DIP计算)

比如:计算WVGA(800*480)分辨率,3.7英寸的密度DPI

图1 Diagonal pixel 表示对角线的像素值(=),DPI=933/3.7=252 3.手机屏幕的分类 3.1根据手机屏幕密度(DPI)或屏幕尺寸大小分为以下3类,如图2所示 图2 3. 2手机屏幕分类和像素密度的对应关系如表1所示:

图3 从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机4 UI设计 从开发角度讲,应用程序会根据3类A ndroid手机屏幕提供3套UI布局文件,但是相应界面图标也需要提供3套,如表2所示

需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout- small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间) 2)图片资源方面 需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi Android有个自动匹配机制去选择对应的布局和图片资源 分享到:?上一篇:分享摩托罗拉milestone手机升级到Android 2.2的过程 ?下一篇:基于feng streaming server 搭建Android直播测试平台 查看评论 7楼pc0de 2011-12-16 17:11发表[回复] 谢谢分享啊 6楼yang_hui198**** ****-11-19 16:44发表[回复] 很强大!!!很喜欢!!! 3楼noICE1 2011-08-16 14:59发表[回复]

复习材料《Android移动应用开发技术》

1、关于android进程,说法不正确的是( B ) A、组件运行所在的进程,是由androidManifest.xml决定,它可以指定该组件运行于哪个进程。 B、背景进程是不为用户所见的Activity,但是还会有可能被用户看到,所以它不能被杀死 C、当急需内存时,android会决定优先关闭那些空闲的进程 D、可视进程一般不会不被系统所杀死 2、Matrix类的作用( A ) A、可以存储缩小或放大比列 B、存储文件中的图片信息 C、存储资源中的图片信息 D、存储内存中的图片信息 3、关于主题的说法,错误的是( D ) A、它是属性集合 B、它可以在程序中来设置 C、它通常用于一个Activity或所有Activity上 D、它可以用于单个TextView上 4、setOnTouchEvent 设置返回值为true 和 false有何区别?以下说法较准确是( C ) A、没有区别,都能对事件进行监听 B、设置为true时只能在移动时获得一次监听事件,false则可以多次 C、设置为false是,在处理一次监听事件后,系统将抛弃该次事件 D、返回true表示这个消息已经被处理结束,后续的handler不再接收到这个消息 二、开发技术设计与应用能力部分 注:以下程序均是相关程序或小项目的实现代码,根据每个程序或项目的特性,完成程序空缺部分的内容,使其实现。具体程序代码注释省略。 图1 图2 图3 图4 1)电话实现[主界面如图1] 程序描述:完成手机打电话功能。 public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/ea12867433.html,yout.activity_main); Button btn_call = (Button)this.findViewById(R.id.btn_call); btn_call.setOnClickListener(new btnCall()); } private class btnCall implements OnClickListener (1) { public void onClick(View v) { // TODO Auto-generated method stub EditText et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); String s_number = et_number.getText().toString().trim(); (2) Intent i_call = new Intent(); i_call.setAction(Intent.ACTION_CALL(3)); i_call.setData(Uri.parse("tel:"+s_number)); startActivity(i_call); (4) } } } 2)动画实现[主界面如图2] 程序描述:手机屏幕触摸后演示动画,假设XML文件已经设置好,id资源为:R.drawable.panda public class MainActivity extends Activity { ImageView iv_action; AnimationDrawable ad_action; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/ea12867433.html,yout.activity_main); iv_action = (ImageView)this.findViewById(R.id.iv_action); iv_action.setBackgroundResource(5)(R.drawable.panda); ad_action = (AnimationDrawable) iv_action.getBackground(); } public boolean onTouchEvent(MotionEvent event) { ad_action.start();(6) return super.onTouchEvent(event); } } 3)撕衣服游戏实现 项目描述:划动屏幕时完成撕衣服效果,并产生撕衣服声音(sound.mp3) public class MainActivity extends Activity { ImageView iv_upper; ImageView iv_below;

android笔试题及答案

单选题 中可以用来处理js中警示,确认等对话框的是(C) 2.假设assets目录下有文件结构html/,用loadUrl()方法将该网页加载至 webView 时,需传入的参数是(B) A. B. C. D. 3.下列不属于补间动画相关类的是(B) 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状 态码表示请求完成的是(D) 5.关于ImageSwitcher 说法错误的是:( B ) 里可以通过Alpha设定转换时候的透明位 B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法 是设置资源被读入到这个ImageSwitcher的时候动画效果 是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果 6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象 D. () 7.关于Handler的说法不正确的是( A ) A.它实现不同进程间通信的一种机制 B.它避免了在新线程中刷新UI的操作 C.它采用队列的方式来存储Message D.它实现不同线程间通信的一种机制 8.Vector和ArrayList的主要区别是(B): A. ArrayList内部基于链表,而Vector是基于数组的

B. Vector的大部分方法做了同步,而ArrayList没有同步 C. Vector是可串行化的,而ArrayList不是 D. Vector实现了RandomAccess,而ArrayList没有 9.下列属于SAX解析xml文件的优点的是(B ) A.将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 B.不用事先调入整个文档,占用资源少 C.整个文档调入内存,浪费时间和空间 D.不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失 a1="abc"; String a2="abc"; String a3="abcd"; 总共创建( A )个String对象。 多选题 1.在添加第一个appwidget窗口小部件时,会执行的方法是(ABD) 2.下列属于SOAP优点的是(ABCD) A,SOAP 与编程语言无关。SOAP 可以使用任何语言来完成 B,SOAP 是完全和厂商无关。 C,SOAP 与平台无关D,SOAP 是简单的,可扩展的 3.下列属于SAX解析XML需要用到的类和接口是(BCD) A.DocumentBuilder 4.在使用蓝牙必须获取的权限是(AD) 5.Chronometer类的重要方法(ABC) 简答题 1.oom是什么如何避免 当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后这就会抛出OutOfMemoryException 也就是OOM 避免:

ANDROID实训心得体会

项目总结 时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我 们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平 都有很大的提高,我们非常感谢这次实训。 刚开始二周的高强度的课程安排让我们受益匪浅;接下来的项目实训又让我们可以巩固 了课程。这让我觉得实习生活充实而有意义。 乐淘购物项目和android优化大师,我更好的学习了ui的设计,如何使界面漂亮,美观, 巩固了listview,gridview,的使用,学会了动画进入界面的,和会移动的画廊等等。在这 两个项目中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完 成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获 取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上 真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。 音乐播放器项目,我们是七个人组成小组完成的,由组长带领我们,分配任务,每个人, 都发挥自己的长处,更好地去完成任务。对于团队开发来说,团结一致使我深有体会。团队 的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具 体实践中,不仅加深我对理论的掌握和 运用,还让我拥有了一次又一次难忘的开发经历,这是也是实训最大的收获。 这次实训对于我以后学习、找工作也真是受益菲浅,在这3个月中让我初步从理性回到 感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发! 相信这些宝贵的经验会成为我今后成功的重要的基石。在此,我非常感谢指导老师和 同学对我的帮助。篇二:android实训报告 通信与电子信息专业实训报告 项目名称:基于android的游戏开发 班级 10通信1班 姓名 学号 指导教师 成绩 实训时间:年月日— 目录 一、实训目的及其意义 (3) 1.1、目的及意义 (3) 1.2、研究现状 (3) 二、实训主要任务、重点及难点 (4) 2.1、任务 (4) 2.2、重点内容及实现途径 (4) 三、实训具体内容及完成的主要工作 (5) 3.1、认识基础开发 (6) 3.2、了解数据存储 (6) 3.3、总体实训过程 (7) 四、实际遇到的困难,解决问题的方法和措施 (8) (一)、所遇问题 (8) (二)、解决方法与措施 (9) 五、心得体会 (9)

Android面试题带标准答案

Android面试题 下列哪些语句关于内存回收的说明是正确的? (b ) A、程序员必须创建一个线程来释放内存 B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 下面异常是属于Runtime Exception的是(abcd)(多选) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12 下列程序段的输出结果是:(b)?void complicatedexpression_r(){int x=20, y=30; boolean b; b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b);? } A、true B、false C、1 D、011.activity 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d) A、onPause() B、onCreate() C、 onResume() D、onStart() Intent传递数据时,下列的数据类型哪些可以被传递(abcd)(多选) A、Serializable B、charsequence C、Parcelable D、Bundle android 中下列属于Intent的作用的是(c) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 下列属于SAX解析xml文件的优点的是(b) A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会 消失 下面的对自定style的方式正确的是(a) A、 <resources> ?<stylename="myStyle"> ? ?</style> B、<style name="myStyle"> ?<item name="android:layout_width">fill_parent</item>

Android期末复习题总结

1、Intent的Component属性的作用是什么,如何定义此属性? component(组件),指定Intent的的目标组件的类名称。通常Android会根据Intent 中 包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹 配的目标组件。但是,如果component这个属性有指定的话,将直接使用它指定的组件, 而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。Component属性的作用是用来指定Intent的目标组件的类名称。如果Component这个属性被指定了的话,Intent的其它属性都是可选项,Android 会直接使用Component指定目标组件,而不再执行其它查找过程。 在使用时,需要先创建一个ComponentName对象,然后将它设置成Intent对 象的Component的属性。通过setComponent()、setClass()和setClassName() 三种方法都可以设置组件的名称,通过getComponent()方法则可获得设置项。 2、发送广播时,可以通过sendCatagoryBroadcast()方法将Intent对象发送出去( ). (错) 3、Android是什么?( ) 一种操作系统 4、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是( ) DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。 5、Android操作系统最早由哪个公司研发?( ) Android公司 6、下列中不属于手持设备的是( ) 机顶盒 7、下列不是手机操作系统的是()。Windows Vista 8、到目前为止,Android操作系统的最高版本是哪个?( )Android L 9、安装Android SDK时,可以通过( )在线安装或离线安装。Android sdk manager 10、开发Android应用程序时,一般使用的计算机语言是( ) 。JAVA 11、E/AndroidRuntime(1099): https://www.360docs.net/doc/ea12867433.html,ng.RuntimeException: Unable to instantiate activity ComponentInfo{com.test/com.test.CanvasActivitys}: https://www.360docs.net/doc/ea12867433.html,ng.ClassNotFoundException: com.test.CanvasActivitys in loader dalvik.system.PathClassLoader[/data/app/com.test-1.apk] 这段话是程序报错在LogCat中产生的记录,从中可以分析问题的原因可能在哪里?( ) CanvasActivitys类没有在AndroidManifest中正确申明 12、对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android 需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service (对) Intent 可以传递View对象(错) Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被 调用者之间的解耦(对) 通过Intent可以删除程序(对) 13、下面退出Activity错误的方法是()。System.exit( ) 14、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行 的回调函数是( )。startActivityResult() 15、这是一个资源配置文件,下面描述正确的是? ( )这个shape文件是画一条虚线,实 线段5dp,间隔3dp 16、Toast toast = new Toast(this); toast.setText("今天天气不错\n哈哈"); toast.show(); 上面代码的执行结果是什么( )。代码会抛出异常,因为new出的Toast对象不能再使用setText方法来设置提示框文本

Android移动应用试题(带答案)

<>试题 一.选择题(2’X12) 1.下面哪一个不属于Android体系结构中的应用程序层 A.电话簿 B.日历 C.SQLite D.SMS程序 2.下面哪种说法不正确 A.Android应用的gen目录下的被删除后还能自动生成; B.res目录是一个特殊目录,包含了应用程序的全部资源,命名规则可以支持数字(0-9) 下横线(_),大小写字母(a-z , A-Z); C.文件是每个Android项目必须有的,是项目应用的全局描述。其中指定程序的包名 (package=”…”)+指定android应用的某个组件的名字(android:name=”…”)组成了该组件类的完整路径 D.assets和res目录都能存放资源文件,但是与res不同的是assets支持任意深度的子 目录,在它里面的文件不会在里生成任何资源ID 3.在一个相对布局中怎样使一个控件居中 A.android:gravity="center" B.android:layout_gravity="center" C.android:layout_centerInParent="true" D.android:scaleType="center" 4.下面是一段生成对话框的代码,哪一行有错误 Builder builder = new Builder(getApplicationContext()); 1 ("提示").setMessage("请选择"); 2 ("重置", new OnClickListener() 3 { 4 public void onClick(DialogInterface dialog, int which) 5 { 6 ("log", "重置被按了!"); 7 } 8 }); 9 ("取消", null); 10 ("确定", new OnClickListener() 11 { 12 public void onClick(DialogInterface dialog, int which) 13 { 14 (getApplicationContext(), "确定被按了!", 15 .show(); 16 } 17

ANDROID OPENGL ES 基础知识(基本概念)

基本概念 为了方便后边的编程,我们第一篇文章主要是介绍一些关于OpenGLES基本的概念。点 3D图像的最小单位称为点(point)或者顶点vertex。它们代表三维空间中的一个点并用来建造更复杂的物体。多边形就是由点构成,而物体是由多个多边形组成。尽管通常OpenGL支持多种多边形,但OpenGLEs只支持三边形(即三角形)所以即使我们要绘制一个正方形也要把它拆分为两个三角形绘制。先说说坐标系的问题。 默认情况下,以屏幕中心为坐标轴原点。原点左方x为负值,右边为正值。原点上方y 为正,原点下方为负。垂直屏幕向外为z正,垂直屏幕向里为z负。默认情况下,从原点到屏幕边缘为1.0f,沿各轴增加或减小的数值是以任意刻度进行的–它们不代表任何真实单位,如英尺,像素或米等。你可以选择任何对你的程序有意义的刻度(全局必须保持单位一致,不能一部分使用米,一部分使用像素)。OpenGL只是将它作为一个参照单位处理,保证它们具有相同的距离。如图:

了解了坐标轴,我们来看看怎么在坐标系中表示一个点,通常用一组浮点数来表示点。例如一个正方形的4个顶点可表示为: 1.float vertices[] ={ 2.-1.0f,1.0f,.0f,//左上 3.-1.0f, -1.0f,.0f,//左下 4.1.0f, -1.0f,.0f,//右下 5.1.0f,1.0f,.0f,//右上 6.}; 为了提高性能,通常还需要将浮点数组存入一个字节缓冲中。所以有了下面的操作: 1.ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length *4); //申请内存 2.vbb.order(ByteOrder.nativeOrder()); //设置字节顺序,其中ByteOrder.nativeOrder()是 获取本机字节顺序 3.FloatBuffer vertexBuffer = vbb.asFloatBuffer(); //转换为float型

Android实习报告

合肥工业大学学生自主实习报告 学号: xxx 姓名: xxx 实习单位: 实习时间:2014年6月22-7月5日

一、实习目的: 1、掌握android系统开发的一些常用知识 2、拥有独立解决开发中遇到问题的能力 3、熟悉android软件开发流程并至少做一个android软件项目。 了解现阶段互联网发展主流,了解移动互联网,认识移动互

联网的发展与展望,认识Android,了解基于Android的应用软件开发方法及其商业流程。把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。使学生在此期间能够初次体会到实际生产中的种种技能与经验,完成一项项目锻炼独立思考及团队合作能力。使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况。生产实习是学校教学的重要补充部分,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成部分和不可替代的重要环节。它是与今后的职业生活最直接联系的,学生在生产实习过程中将完成学习到就业的过渡,因此生产实习是培养技能型人才,实现培养目标的主要途径。它不仅是校内教学的延续,而且是校内教学的总结。生产实习一方面巩固了书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使我们在实践中得到提高实训环节对于提高学生的综合能力和全面素质具重要意义 二、实习单位:苏州高博培训

Android开发技术期末考试复习题

试题 一、选择题 1 android虚拟设备的缩写是(A VD) 2 Android SDK目前支持的操作系统(Linux) 3 Android开发工具插件(ADT)没有提供的开发功能(自动更新) 4 Android SDK提供一些开发工具可以把应用软件打包成Android格式文件(APK) 5 Android当中基本的所有的UI都是由(view)或者其子类实现的 7下列不是Activity的生命周期方法之一的是() onCreate onStart onRestart onResume onPause onStop onDestroy 8 以下可以做EditText编辑框的提示信息是(adroid:hint) 以下不是手机操作系统的是(windows vista) 下列哪个属性是专用于相对布局的(D) A.android.orientation 线性vertical 垂直horizontal B.android:stretchColumns C.android:layout_alignParentRight D.android:layout_toRightOf 定义LinearLayout垂直方向布局时设置的属性( D ) A.android:layout_height B.android:gravity C.android:layout D. android:orientation vertical 垂直 为了使android适应不同分辨率的机型,布局时字体单位应用( D ) A.dp B.dip 像素 C.px D.sp 下面属于android的动画分类的有( AB) A.Tween B.Frame C.Draw D.Animation Property Animation属性动画android 关于service生命周期的onCreate()和onStart()说法正确的是( AD ) A.当第一次启动的时候先后调用onCreate()和onStart()方法 B.当第一次启动的时候只会调用onCreate()方法 C.如果service已经启动,将先后调用onCreate()和onStart()方法 D.如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法 在android中使用Menu时可能需要重写的方法有(AC) A、onCreateOptionsMenu() 三种菜单:选项菜单、上下文菜单、子菜单 B、onCreateMenu() C、onOptionsItemSelected() D、onItemSelected() Intent传递数据时,下列的数据类型哪些可以被传递(ABCD) A、Serializable B、charsequence C、Parcelable D、Bundle java.io包中的( A )和( B )类主要用于对对象Object的读写。 A. objectInputStream B. objectOutPutStream C.Reader D.writer 继承ContentProvider需要实现(ABCD)等方法。 A. insert B. delete C. update D. query

相关文档
最新文档