搜档网
当前位置:搜档网 › Android面试题整理

Android面试题整理

Android面试题整理
Android面试题整理

Android常用面试简答题

1、android 中得动画有哪几类,它们得特点与区别就是什

么?

参考答案:

有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产

生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。

2、请简述Handler得机制原理

参考答案:

andriod 提供了 Handler 与 Looper 来满足线程间得通信。Handler 先进先出原则。

Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。

1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里

得 Message Queue(消息队列)。

2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。

3) Message Queue(消息队列):用来存放线程放入得消息。

4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。

3、说说mvc模式得原理,它在android中得运用

参考答案:

MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分:

模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。

视图( View )对象:就是应用程序中负责生成用户界面得部分。也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显

示处理结果。

控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想

用用户触发得相关事件,交给 Model处理。

Android 鼓励弱耦合与组件得重用,在 Android 中 MVC 得具体体现如下

1) 视图层( view ):一般采用 xml 文件进行界面得描述,使用得时

候可以非常方便得引入,当然,如何您对 android 了解得比较得多了话,就一定可以想到在 android 中也可以使用javascript+html 等得方式作为 view 层,当然这里需要进行 java 与 javascript 之间得通信,幸运得就是, android 提供了它们之间非常方便得通信实现。

2) 控制层( controller ): android 得控制层得重任通常落在了众多

得 acitvity 得肩上,这句话也就暗含了不要在 acitivity 中写代码,要通过 activity 交割 model 业务逻辑层处理,这样做得另外一个原因就是 android 中得 acitivity 得响应时间就是 5s ,如果耗时得操作放在这里,程序就很容易被回收掉。

3) 模型层( model ):对数据库得操作、对网络等得操作都应该在 model

里面处理,当然对业务计算等操作也就是必须放在得该层得。

4、通过Intent传递一些二进制数据得方法有哪些?

参考答案:

1)、使用Serializable接口实现序列化,这就是Java常用得方法。

2)、实现Parcelable接口,这里Android得部分类比如Bitmap类就已

经实现了,同时Parcelable在Android AIDL中交换数据也很常见得。5、在onCreate方法中Bundle savedInstanceState 这个参数有什么作用?

参考答案:

在onCreate方法中有saveInstanceState这个参数,其实这个参数对应两个方法。void onSaveInstanceState(Bundle outState);void onRestoreInstanceState(Bundle savedInstanceState)。当某个activity变得“容易”被系统销毁时,说白了就就是系统在内存不足或

者其她异常情况下把您得Activity销毁时,将调用这个方法。需要注意得就是它就是系统调用得,并且您得Activity就是被动得被销毁。您可

以在销毁得时候保存一下数据。然后在onCreate方法中拿出来。那什么

情况下能触发这两个方法呢?

1)、当用户按下HOME键时。

这就是显而易见得,系统不知道您按下HOME后要运行多少其她得程序,自然也不知道activity A就是否会被销毁,故系统会调用

onSaveInstanceState,让用户有机会保存某些非永久性得数据。以下几

种情况得分析都遵循该原则

2)、长按HOME键,选择运行其她得程序时。

3)、按下电源按键(关闭屏幕显示)时。

4)、从activity A中启动一个新得activity时。

5)、屏幕方向切换时,例如从竖屏切换到横屏时。

在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自

动地创建activity A,所以onSaveInstanceState一定会被执行

总而言之,onSaveInstanceState得调用遵循一个重要原则,即当系统

“未经您许可”时销毁了您得activity,则onSaveInstanceState会被系统调用,这就是系统得责任,因为它必须要提供一个机会让您保存您得

数据(当然您不保存那就随便您了)。

至于onRestoreInstanceState方法,需要注意得就是,

onSaveInstanceState方法与onRestoreInstanceState方法“不一定”

就是成对得被调用得,onRestoreInstanceState被调用得前提就是,activity A“确实”被系统销毁了,而如果仅仅就是停留在有这种可能性得情况下,则该方法不会被调用,例如,当正在显示activity A得时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存得原因被系统销毁,故activity A得onRestoreInstanceState方法不会被执行

另外,onRestoreInstanceState得bundle参数也会传递到onCreate方法中,您也可以选择在onCreate方法中做数据还原。

6、请谈谈Activity得生命周期?

参考答案:

在系统中得Activity被一个Activity栈所管理。当一个新得Activity启动时,将被放置到栈顶,成为运行中得Activity,前一个Activity保留在栈中,不再放到前台,直到新得Activity退出为止。

Activity有四种本质区别得状态:

1)在屏幕得前台(Activity栈顶),叫做活动状态或者运行状态(active or running)

2)如果一个Activity失去焦点,但就是依然可见(一个新得非全屏得

Activity 或者一个透明得Activity 被放置在栈顶),叫做暂停状态

(Paused)。一个暂停状态得Activity依然保持活力(保持所有得状态,成员信息,与窗口管理器保持连接),但就是在系统内存极端低下得时候将被杀掉。

3)如果一个Activity被另外得Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态与成员信息,但就是它不再可见,所以它得窗口被隐藏,当系统内存需要被用在其她地方得时候,Stopped得Activity将被杀掉。

4)如果一个Activity就是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求

该Activity结束,要么直接杀掉它得进程。当该Activity再次显示给用

户时,它必须重新开始与重置前面得状态。

Activity提供了7个生命周期方法:

onCreate(),onStart(),onResume(),onPause(),onStop(),onDestory(),

onRestart()。在这七个生命周期方法中有三个关键得循环。其实官方给

得那张图画得很明白,但估计很少人能有耐心去揣摩。那就换种方式展现。

瞧图吧:

1)以下该图呈现了一个Activity完整得生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有得“全局”

状态,在 onDestory()释放所有得资源。

首先我们运行程序,这就是打开MainActivity依次调用onCreate->onStart->onResume,这时MainActivity在栈顶,与我们交互

得Activity都在栈顶。然后我按下返回键,则会依次调用

onPause->onStop->onDestory。这属于一个完整得生命周期。

7、谈谈您对BroadCastRceiver得理解?

参考答案:

广播接收者,android四大组件之一,也就是唯一一个能动态注册得组件。

1)广播接收者就是一个专注于接收广播通知信息,并做出对应处理得组件。很多广播就是源自于系统──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。

2)应用程序可以拥有任意数量得广播接收者以对所有它感兴趣得通知信息予以响应。所有得接收器均继承自BroadcastReceiver基类。

3)广播接收者没有用户界面。然而,它们可以启动一个activity来响应它们收到得信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户得注意力──闪动背灯、震动、播放声音等等。一般来说就是在状态栏上放一个持久得图标,用户可以打开它并获取消息。

8、广播分几种?她们有什么区别?

参考答案:

广播被分为两种不同得类型:“普通广播(Normal broadcasts)”与“有序广播(Ordered broadcasts)”。普通广播就是完全异步得,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递得效率比较高,但缺点就是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent得传播。

然而有序广播就是按照接收者声明得优先级别,被接收者依次接收广播。如:A 得级别高于B,B得级别高于C,那么,广播先传给A,再传给B,最后传给C 。优先级别声明在 intent-filter 元素得 android:priority 属性中,数越大优先级别越高,取值范围:-1000到1000,优先级别也可以调用IntentFilter对象得setPriority()进行设置。有序广播得接收者可以终止广播Intent得传播,广播Intent得传播一旦终止,后面得接收者就无法接收到广播。

另外,有序广播得接收者可以将数据传递给下一个接收者,如:A得到广播后,可以往它得结果对象中存入数据,当广播传给B时,B可以从A得结果对象中得到A存入得数据。

Context、sendBroadcast()

发送得就是普通广播,所有订阅者都有机会获得并进行处理。

Context、sendOrderedBroadcast()

发送得就是有序广播,系统会根据接收者声明得优先级别按顺序逐个执行接收者,前面得接收者有权终止广播(BroadcastReceiver、abortBroadcast()),如果广播被前面得接收者终止,后面得接收者就再也无法获取到广播。对于有序广播,前面得接收者可以将数据通过setResultExtras(Bundle)方法存放进结果对象,

然后传给下一个接收者,下一个接收者通过代码:Bundle bundle = getResultExtras(true))可以获取上一个接收者存入在结果对象中得数据。

9、广播得生命周期?

参考答案:

广播得生命周期就是非常短得,当发送之后intent会到AndroidManifest、xml 文件中找就是不就是有匹配得action,如果有就会调用Receiver ,然后获得Receiver 对象,再执行onReceive方法,这时候Receiver对象就没有用了,当我们再次点击按钮得时候就会重新获得对象,这就就是BroadcastReceiver得生命周期、

在BroadcastReceiver里不能做一些比较耗时得操作,否侧会弹出ANR(Application No Response)得对话框、

如果需要完成一项比较耗时得工作,应该通过发送Intent给Service,由Service 来完成、这里不能使用子线程来解决,因为BroadcastReceiver得生命周期很短,子线程可能还没有结束,BroadcastReceiver就先结束了、BroadcastReceiver 一旦结束,此时BroadcastReceiver得所在进程很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件得进程)、如果它得宿主进程被杀死,那么正在工作得子线程也会被杀死、所以采用子线程来解决就是不可靠得、

9、两种注册BroadcastReceiver得方法?

参考答案:

使用在manifest中注册得方法注册BroadcastReceiver,即使您得应用程序没有启动,或者已经被关闭,这个BroadcastReceiver依然会继续运行,这样得运行机制可能会给软件得用户造成困扰。所以作为程序得开发者,我们希望能够有一种灵活得机制完成BroadcastReceiver得绑定与解除绑定操作。Android当然也考虑到了这些问题,所以在Context这个类当中提供了如下两个函数可以在代码中注册:

i、 registerReceiver(receiver,filter);

这个函数得作用就就是将一个BroadcastReceiver注册到应用程序当中,这个函数接收两个参数,第一个参数就是需要注册得BroadcastReceiver对象,第二个就是一个IntentFilter。第一个参数就是非常容易理解得,第二个参数得作用就是定义了哪些Intent才能触发这个注册得BroadcastReceiver对象。

ii、 unregisterReceiver(receiver);

这个方法就非常得简单了,用于解除BroadcastReceiver得绑定状态。一旦解除完成,响应得BroadcastReceiver就不会再接收系统所广播得Intent了。

两种注册BroadcastReceiver得方法

1、在应用程序得代码中进行注册

注册BroadcastReceiver

registerReceiver(receiver,filter);

取消注册BroadcastReceiver

unregisterReceiver(receiver);

2、在AndroidManifest、xml当中进行注册

两种注册BroadcastReceiver方法得比较:

现在我们了解了两种注册BroadcastReceiver得方法之后,需要考虑一下这两种方法适用得场合:

i、第一种注册得方法可以保证在应用程序安装之后,BroadcastReceiver始终处于活动状态,通常用于监听系统状态得改变,比如说手机得电量,wifi网卡得状态(当然,监视这些东西也就是取决于软件得需求)。对于这样得BroadcastReceiver,通常就是在产生某个特定得系统事件之后,进行相应得操作,

比如说wifi网卡打开时,给用户一个提示;

ii、第二种注册方法相对第一种要灵活得多,这样注册得BroadcastReceiver 通常用于更新UI得状态。一般来说,都就是在一个Activity启动得时候使用这样得方法注册BroadcastReceiver,一旦接收到广播得事件,就可以在onReceive 方法当中更新当前得这个Activity当中得控件。但就是需要注意得就是如果这个Activity不可见了,就应该调用unregisterReceiver方法来解除注册

10、android 中线程与线程,进程与进程之间如何通信

参考答案:

1 、一个 Android 程序开始运行时,会单独启动一个 Process 。

默认情况下,所有这个程序中得 Activity 或者 Service 都会跑在这个Process 。

默认情况下,一个 Android 程序也只有一个 Process ,但一个 Process 下却可以有许多个 Thread。

2 、一个 Android 程序开始运行时,就有一个主线程 Main Thread 被创建。该线程主要负责 UI 界面得显示、更新与控件交互,所以又叫 UI Thread 。

一个 Android 程序创建之初,一个 Process 呈现得就是单线程模型—即Main Thread ,所有得任务都在一个线程中运行。所以, Main Thread 所调用得每一个函数,其耗时应该越短越好。而对于比较费时得工作,应该设法交给子线程去做,以避免阻塞主线程(主线程被阻塞,会导致程序假死现象)。

3 、 Android 单线程模型: Android UI 操作并不就是线程安全得并且这些操作必须在 UI 线程中执行。如果在子线程中直接修改 UI ,会导致异常。

11、View如何进行刷新?

参考答案:

在一个开启得线程中调用handler对象得sendMessage方法发送信息,在UI线程中调用handler对象得回调方法handleMessage进行处理,在回调方法中执行invalidate或者postInvalidate、

12、ANR就是什么?哪些情况下会发生?开发时如何避免ANR?参考答案:

ANR(Application Not Responding):应用程序无应答。默认情况下,在android 中Activity得最长阻塞时间就是5秒,BroadcastReceiver得最长执行时间则就是10秒。为了避免出现ANR,可以在做比较耗时操作时,尽量使用子线程或Service。

13、请描述SAX、DOM、PULL解析xml得原理,以及各自优缺点。

参考答案:

这里首先明白什么就是SAX就是一个用于处理XML事件驱动得“推”模型,优点就是一种解析速度快并且占用内存少得xml解析器,它需要哪些数据再加载与解析哪些内容。缺点就是它不会记录标签得关系,而要让您得应用程序自己处理,这样就增加了您程序得负担。

DOM就是一种文档对象模型,DOM可以以一种独立于平台与语言得方式访问与修改一个文档得内容与结构。Dom技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们得属性,增加一个元素等,Dom技术使得页面得交互性大大地增强。缺点就是DOM解析XML文件时,会将XML文件得所有内容以文档树方式存放在内存中。

Pull解析与Sax解析很相似,Pull解析与Sax解析不一样得地方就是pull读取xml文件后触发相应得事件调用方法返回得就是数字还有pull可以在程序中控制想解析到哪里就可以停止解析

14、请解释什么就是AIDL?

参考答案:

AIDL:Android Interface Definition Language,即Android接口描述语言。

Android系统中得进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。

为了使其她得应用程序也可以访问本应用程序提供得服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其她得基于RPC得解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务得接口。我们知道4个Android应用程序组件中得3个(Activity、Broadcast与Content Provider)都可以进行跨进程访问,另外一个Android应用程序组件Service同样可以。因此,可以将这种可以跨进程访问得服务称为AIDL(Android Interface Definition Language)服务。

15、DIP、DPI分别就是什么?

参考答案:

dip(device independent pixels)设备独立像素,与设备屏幕有关。dpi:屏幕像素密度。android最早就是没有考虑到这么多屏幕分辨率得。最早得机器就是g1,她得分辨率就是480*320。但就是,由于android就是开放得平台,各种各样分辨率得设备都可以运行。为了兼容这些平台,android从1、6开始,加入了设备独立像素,dip或者dp。标准屏幕480*320上,px与dip就是1比1得。分辨率高得,比如800*480,就要按比例兑换成480*320。

开发者在开发得时候,ui设计时最好用dp,系统会自动按比例计算为px,从而适配视图。

dpi就是屏幕像素密度。就就是1英寸上像素点得个数。对于屏幕来说,dpi越大,屏幕得精细度越高,屏幕瞧起来就越清楚。比如iphone4得视网膜级得屏幕肯定比iphone 3gs得屏幕像素密度高得多。对于开发者来说,这个不就是很重要。

16、请介绍下Android中常用得五种布局。

参考答案:

答:在Android中,共有五种布局方式,分别就是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。

(1)FrameLayout 框架布局,放入其中得所有元素都被放置在最左上得区域,而且无法为这些元素指定一个确切得位置,下一个子元素会重叠覆盖上一个子元素,适合浏览单张图片。

(2)LinearLayout 线性布局,就是应用程序中最常用得布局方式,主要提供控件水平或者垂直排列得模型,每个子组件都就是以垂直或水平得方式来定位(默认就是垂直)。

(3)AbsoluteLayout 绝对定位布局,采用坐标轴得方式定位组件,左上角就是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为android:layout_x 与 android:layout_y

来确定坐标。

(4)RelativeLayout 相对布局,根据另外一个组件或就是顶层父组件来确定下一个组件

得位置。与CSS里面得类似。

(5)TableLayout 表格布局,类似Html里得Table、使用TableRow来布局,其中TableRow 代表一行,TableRow得每一个视图组件代表一个单元格。

17、请介绍下Android得数据存储方式。

参考答案:

答:Android提供了5种方式存储数据:

(1)使用SharedPreferences存储数据;它就是Android提供得用来存储一些简单配置信息得一种机制,采用了XML格式将数据存储到设备中。只能在同一个包内使用,不能在不同得包之间使用。

(2)文件存储数据;文件存储方式就是一种较常用得方法,在Android中读取/写入文件得方法,与Java中实现I/O得程序就是完全一样得,提供了open()与open()方法来读取设备上得文件。

(3)SQLite数据库存储数据;SQLite就是Android所带得一个标准得数据库,它支持SQL 语句,它就是一个轻量级得嵌入式数据库。

(4)使用ContentProvider存储数据;主要用于应用程序之间进行数据交换,从而能够让其她得应用保存或读取此Content Provider得各种数据类型。

(5)网络存储数据;通过网络上提供给我们得存储空间来上传(存储)与下载(获取)我们存储在网络空间中得数据信息。!

18、请说明隐式、显式Intent得区别?

参考答案:

显式Intent直接用组件得名称定义目标组件,这种方式很直接。但就是由于开发人员往往并不清楚别得应用程序得组件名称,因此,显式Intent更多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。

隐式Intent恰恰相反,它不会用组件名称定义需要激活得目标组件,它更广泛地用于在不同应用程序之间传递消息。

在显式Intent消息中,决定目标组件得唯一要素就就是组件名称,因此,如果您得Intent 中已经明确定义了目标组件得名称,那么您就完全不用再定义其她Intent内容。

而对于隐式Intent则不同,由于没有明确得目标组件名称,所以必须由Android系统帮助应用程序寻找与Intent请求意图最匹配得组件。

19、请说明getWritableDatabase()与getReadableDatabase()得区别?

参考答案:

getReadableDatabase()并不就是以只读方式打开数据库,而就是先执getWritableDatabase(),失败得情况下才调用。getWritableDatabase()与getReadableDatabase()方法都可以获取一个用于操作数据库得SQLiteDatabase实例。但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库得磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库得磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。

20、请描述下Activity得生命周期。

参考答案:

activity得生命周期方法有:onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、onDestory()。

activity主要生命周期得方法说明:

onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle得形式提供对以前储存得任何状态得访问!

onStart():activity变为在屏幕上对用户可见时调用。

onResume():activity开始与用户交互时调用(无论就是启动还就是重新启动一个活动,

该方法总就是被调用得)。

onPause():activity被暂停或收回cpu与其她资源时调用,该方法用于保存活动状态得,也就是保护现场,压栈吧!

onStop():activity被停止并转为不可见阶段及后续得生命周期事件时调用。

onRestart():重新启动activity时调用。该活动仍在栈中,而不就是启动新得活动。onDestroy():activity被完全从系统内存中移除时调用,该方法被调用

21、如何将一个Activity设置成窗口得样式。

参考答案:

只需要设置一下Activity得主题就可以了,在AndroidManifest、xml 中定义 Activity

得地方加上android :theme="@android:style/Theme、Dialog"这就使您得应用程序变成对话框得形式弹出来了。或者android:theme="@android:style/Theme、Translucent"。就变成半透明得。

22、Android中Activity, Intent, Content Provider, Service各有什么区别?

参考答案:

答:Activity:活动,就是最基本得android应用程序组件。一个活动就就是一个单独得屏幕,每一个活动都被实现为一个独立得类,并且从活动基类继承而来。

Intent:意图,描述应用想干什么。最重要得部分就是动作与动作对应得数据。

Content Provider:内容提供器,android应用程序能够将它们得数据保存到文件、SQLite数据库中,甚至就是任何有效得设备中。当您想将您得应用数据与其她应用共享时,内容提供器就可以发挥作用了。

Service:服务,具有一段较长生命周期且没有用户界面得程序。23、您如何评价Android系统优缺点?

参考答案:

优势:

一、开放性三、丰富得硬件选择五、无缝结合得Google应用支持

缺点:

一、安全与隐私

二,开发商自定义,不够统一四、同类机型用户减少

24、返回键与Home键区别?

参考答案:

返回键默认行为就是finish处于前台得Activity得即Activity得状态为Destroy状态为止,再次启动该Activity就是从onCreate开始得(不会调用onSaveInstanceState方法)。Home键默认就是stop前台得Activity即状态为onStop为止而不就是Destroy,若再次启动它,会调用onSaveInstanceState方法,保持上次Activity得状态则就是从OnRestart开始得---->onStart()--->onResume()。

25、如果后台得Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

参考答案:

在”暂停onPause” 状态将数据保存。

26、请介绍下ContentProvider就是如何实现数据共享得?

参考答案:

一个程序可以通过实现一个Content provider得抽象接口将自己得数据完全暴露出去,而且Content providers就是以类似数据库中表得方式将数据暴露。Content providers存

储与检索数据,通过它可以让所有得应用程序访问到,这也就是应用程序之间唯一共享数据

得方法。

要想使应用程序得数据公开化,可通过2种方法:创建一个属于您自己得Content provider或者将您得数据添加到一个已经存在得Content provider中,前提就是有相同数

据类型并且有写入Content provider得权限。

如何通过一套标准及统一得接口获取其她应用程序暴露得数据?

Android提供了ContentResolver,外界得程序可以通过ContentResolver接口访问ContentProvider提供得数据。

27、什么情况会导致Force Close ?如何避免?能否捕获导致其

得异常?

参考答案:

程序出现异常,比如NullPointerException。

避免:编写程序时逻辑连贯,思维缜密。能捕获异常,在logcat中能瞧到异常信息,定位

错误并修改错误

28、请简述Android应用程序结构就是哪些?

参考答案:

Android应用程序结构就是:

Linux Kernel(Linux内核)、Libraries(系统运行库或者就是c/c++核心库)、Application Framework(开发框架包)、Applications (核心应用程序)

29、横竖屏切换时候activity得生命周期?

参考答案:

1、不设置Activity得android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity得android:configChanges="orientation"时,切屏还就是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity得android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

30、DDMS与TraceView得区别?

参考答案:

DDMS就是一个程序执行查瞧器,在里面可以瞧见线程与堆栈等信息,TraceView就是程序性能分析器。

31、如何将SQLite数据库(、db文件)与apk文件一起发布?

参考答案:

答:可以将、db文件复制到Eclipse Android工程中得res/raw目录中。所有在res/raw 目录中得文件不会被压缩,这样可以直接提取该目录中得文件。可以将、db文件复制到res/raw目录中

32、android view,surfaceview,glsurfaceview得区别?

参考答案:

SurfaceView就是从View基类中派生出来得显示类,直接子类有GLSurfaceView与VideoView,可以瞧出GL与视频播放以及Camera摄像头一般均使用SurfaceView SurfaceView与View最本质得区别在于,surfaceView就是在一个新起得单独线程中可以重新绘制画面而View必须在UI得主线程中更新画面。

那么在UI得主线程中更新画面可能会引发问题,比如您更新画面得时间过长,那么您得主UI线程会被您正在画得函数阻塞。那么将无法响应按键,触屏等消息。

当使用surfaceView 由于就是在新得线程中更新画面所以不会阻塞您得UI主线程。但这也带来了另外一个问题,就就是事件同步。比如您触屏了一下,您需要surfaceView中thread 处理,一般就需要有一个event queue得设计来保存touch event,这会稍稍复杂一点,因为涉及到线程同步。

所以基于以上,根据游戏特点,一般分成两类。

1)被动更新画面得。比如棋类,这种用view就好了。因为画面得更新就是依赖于 onTouch 来

更新,可以直接使用 invalidate。因为这种情况下,这一次Touch与下一次得Touch需要得时间比较长些,不会产生影响。

2)主动更新。比如一个人在一直跑动。这就需要一个单独得thread不停得重绘人得状态,避免阻塞main UI thread。所以显然view不合适,需要surfaceView来控制。、

33、Activity 与Task得启动模式有哪些,它们含义具体就是什么?

答:在一个activity中,有多次调用startActivity来启动另一个activity,要想只生成一个activity实例,可以设置启动模式。

一个activity有四种启动模式:standed,signleTop,singleTask,singleInstance

Standed:标准模式,一调用startActivity()方法就会产生一个新得实例。

SingleTop:如果已经有一个实例位于activity栈顶,就不产生新得实例,而只就是调用activity中得newInstance()方法。如果不位于栈顶,会产生一个新得实例。

singleTask:会在一个新得task中产生这个实例,以后每次调用都会使用这个,不会去产生新得实例了。

SingleInstance:这个与singleTask基本一样,只有一个区别:在这个模式下得activity 实例所处得task中,只能有这个activity实例,不能有其她实例

Android工程师笔试题及答案(汇编)

Android工程师面试题 一、基础(79分) 1. String s = new String("xyz");创建了几个String Object? ( )3分 A、1个 B、2个 C、3个 D、4个 2. Math.round(11.5)和Math.round(-11.5)分别等于多少?()2分 A、11和-11 B、12和-11 C、11和-12 D、12和-12 3.以下错误的说法有:( )2分 A、只要设计合理,当出现error这样的情况时,程序完全可以自动处理 B、exception 表示一种设计或实现问题 C、Set和Map都继承自Collection接口 D、接口可以继承接口 E、抽象类可以继承没有构造函数的实体类 4. 以下哪种类型不能作为switch(expr1)表达式的expr1?( )3分 A、int B、long C、char D、byte 5. 有关ArrayList和Vector的说法,那些是错误的?( )3分 A、Vector是线程安全的 B、ArrayList是线程序不安全的 C、当需要增长时,Vector默认增长为原来一培 D、当需要增长时, ArrayList默认增长为原来一培 6. 以下说法那些是错误的?()3分 A、一个char型变量可以存储一个中文汉字 B、String是最基本的数据类型 C、Integer的缺省值是0 D、String类提供了数值不可改变的字符串 7.请指出以下代码的执行结果()5分 class A{ static{ System.out.print("X"); } public A(){ System.out.print("2"); } } class B extends A{ static{ System.out.print("a"); } public B(){ System.out.print("b"); } } public class Hello{ public static void main(String[] ars){

android笔试题及答案

单选题 中可以用来处理中警示,确认等对话框地是() .假设目录下有文件结构,用()方法将该网页加载至 时,需传入地参数是() . . . . .下列不属于补间动画相关类地是() 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状态码表示请求完成地是() .关于说法错误地是:() 里可以通过设定转换时候地透明位 .在使用一个之前,不一定要调用方法 是设置资源被读入到这个地时候动画效果 是资源文件从这个里消失地时候要实现地动画效果 .建立蓝牙连接时通过方法来获取对象 () (); (); . () .关于地说法不正确地是( ) .它实现不同进程间通信地一种机制 .它避免了在新线程中刷新地操作 .它采用队列地方式来存储 .它实现不同线程间通信地一种机制

8.和地主要区别是(): . 内部基于链表,而是基于数组地 . 地大部分方法做了同步,而没有同步 . 是可串行化地,而不是 . 实现了,而没有 .下列属于解析文件地优点地是() .将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 .不用事先调入整个文档,占用资源少 .整个文档调入内存,浪费时间和空间 .不是长久驻留在内存,数据不是持久地,事件过后,若没有保存数据,数据就会消失""; ""; ""; 总共创建( )个对象. 多选题 .在添加第一个窗口小部件时,会执行地方法是() .下列属于优点地是() 与编程语言无关. 可以使用任何语言来完成是完全和厂商无关. 与平台无关 是简单地,可扩展地 3.下列属于解析需要用到地类和接口是() A. .在使用蓝牙必须获取地权限是() .< ""> .< "" > .< ""> .< ""> 5.类地重要方法()

Android面试题附答案

Android面试题附答案 一、选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(g) A、输入流和输出流 B、字节流和字符流 C、节点流和处理流 D、File stream E、Pipe stream F、Random stream G、Filter stream 2.下列代码的执行结果是:(b) public class Test3{ public static void main(String args[]){ System.out.print(100%3); System.out.print(“,”); System.out.println(100%3.0); } } A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0

3.在继承中,关于构造方法的说明,下列说法错误的是(d) A、子类无条件的继承父类的无参构造方法, B、子类可以引用父类中的有参构造方法,使用super关键字, C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为(b) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) System.out.println(“Not equal”); else System.out.println(“Equal”); } } A、Not equal B、Equal C、无输出 D、编译出错 5.Java语言中字符串“学Java”所占的内存空间是(a) A. 6个字节 B. 7个字节

Android编程基础笔试题及答案2.0

《Android 编程基础》试卷A 注意事项: 1. 本试卷共8页,满分100分; 2. 请把学院、姓名、班级写到密封线内,考试时间90分钟; 3. 请不要把答案写在密封线内 一、单选题(共35题,共61分) 1、 D03MA057(2分)退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 a A 、onPause() B 、onCreate() C 、onResume() D 、onStart() 2、 D02MA058 (2分) Android 项目工程下面的 assets 目录的作用是什么 b A 、放置应用到的图片资源。 Res/drawable B 、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C 、放置字符串,颜色,数组等常量数据 res/values D 、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 3、 D04MA059 (2分)下列不属于android 布局的是(c) A 、F r a m e L a y o u t B 、L i n e a r L a y o u t C 、BorderLayout D 、T a b l e L a y o u t E 、R e l a t i v e L a y o u t 4、 D08MA2060 (2分)Intent 的作用的是 a A 、intent 是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据, B 、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会 因为切 换页面而消失 service C 、实现应用程序间的数据共享 contentprovider D 、处理一个应用程序整体性的工作 5、 D04EA1061(1分) 下列哪个是AbsoluteLayout 中特有的属性 b A,android:layout_height B,android:layout_x C,android:layout_above D,android:layout_toRightOf 6、 D07EA1062(1分)RatingBar 组件中不能用属性直接设置的是d A,五角星个数 B,当前分数C,分数的增量D,五角星的色彩 7、 D 10EA1063(1分) 在手机开发中常用的数据库是_a__ A,sqlLite B,Oracle C,Sql Server D,Db23 8、 D14MA2064(2分) 关于BroadcastReceiver 的说法不正确的是_b_ A, 是用来接收广播Intent 的 密封线内不要答 题 学院班级姓名

android java笔试题(带大部分答案)

请将试题答在答题卡上,不要在试卷中做任何标记 一、基础题: 1.请写出输出结果 public class Test1 { public static void changeStr(String str){ str="welcome"; } public static void main(String[] args) { String str="1234"; changeStr(str); System.out.println(str); } } ___"1234"____________________________________________________ 2.请写出输出结果 public class Test2 { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] argv) { int i = 0; for (foo('A'); foo('B') && (i < 2); foo('C')) { i++; foo('D'); } } } _____ABDCBDCB___________________________________________________ 3.class A { protected int method1(int a, int b) { return 0; } } 以下A扩展类中的方法哪两个是正确的:(选择两个) A.public int method1(int a, int b) { return 0;} B.private int method1(int a, int b) { return 0;} C.private int method1(int a, long b) { return 0;} D.public short method1(int a, int b) { return 0;} E.static protected int method1(int a, int b) { return 0;} ____AD___________________________________________________ 4.public class Outer{ public void someOuterMethod() { // Line 3

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常用面试简答题 1、android 中得动画有哪几类,它们得特点与区别就是什 么? 参考答案: 有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产 生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。 2、请简述Handler得机制原理 参考答案: andriod 提供了 Handler 与 Looper 来满足线程间得通信。Handler 先进先出原则。 Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。 1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里 得 Message Queue(消息队列)。 2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。 3) Message Queue(消息队列):用来存放线程放入得消息。 4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。 3、说说mvc模式得原理,它在android中得运用 参考答案: MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分: 模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。 视图( View )对象:就是应用程序中负责生成用户界面得部分。也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显 示处理结果。 控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想 用用户触发得相关事件,交给 Model处理。 Android 鼓励弱耦合与组件得重用,在 Android 中 MVC 得具体体现如下 1) 视图层( view ):一般采用 xml 文件进行界面得描述,使用得时 候可以非常方便得引入,当然,如何您对 android 了解得比较得多了话,就一定可以想到在 android 中也可以使用javascript+html 等得方式作为 view 层,当然这里需要进行 java 与 javascript 之间得通信,幸运得就是, android 提供了它们之间非常方便得通信实现。

android面试题及答案

一选择题(可多选,30分) 1、关于BroadcastReceiver说法正确的是(AB) A、BroadcastReceiver有两种注册方式,静态注册和动态注册 B、Broadcast分正常广播和有序广播,其中有序广播可以被停止掉,不传给下一个接受者 C、Broadcast Receiver 提供了可视化的界面来显示广播信息 D、BroadcastReceiver的onReceive函数里可以使用线程来执行耗时的操作 2、关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是(D) A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念. C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念. D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念. 3 android 中下列关于Intent说法正确的是(C) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 4 android 关于service生命周期的onCreate()和onStart()说法正确的是(AD) A、当第一次启动的时候先后调用onCreate()和onStart()方法 B、当第一次启动的时候只会调用onCreate()方法 C、如果service已经启动,将先后调用onCreate()和onStart()方法 D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法 5.在异常处理中,如释放资源、关闭文件、关闭数据库等由( C)来完成。 A.try子句 B.catch子句 C.finally子句 D.throw子句 6.关于Collections说法正确的是(AC) A.Collections 包含有各种有关集合操作的静态多态方法 B.Collections是集合类的一个顶级接口, C.Collections 是一个包装类,此类不能实例化 D.List是Collections的子接口 7.关于java抽象类说法正确时是(AC)

Android面试题-带答案

1.介绍一下Android系统的体系结构 答:应用层:android的应用程序通常涉及用户界面和交互。 应用框架层:UI组件、各种管理器等。 函数库层:系统C库、媒体库、webkit、SQLite等。 linux核心库:linux系统运行的组件。 2.Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型 3.请介绍下Android的数据存储方式。 答:一.SharedPreferences方式 二.文件存储方式 三.SQLite数据库方式 四.内容提供器(Content provider)方式 五. 网络存储方式 4.说说mvc模式的原理 答:mvc是model,view,controller的缩写,mvc包含三个部分: 模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。 控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。 5.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 答:重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。通过重写onRestoreInstanceState()方法可以从中提取保存好的数据

Android Java面试笔试题

Android Java笔试题(带大部分答案) 请将试题答在答题卡上,不要在试卷中做任何标记 一、基础题: 1. 1. 请写出输出结果 public class Test1 { public static void changeStr(String str){ str=”welcome”; } public static void main(String[] args) { String str=”1234″; changeStr(str); System.out.println(str); } } ___”1234″____________________________________________________ 1. 2. 请写出输出结果 public class Test2 { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] argv) { int i = 0; for (foo(…A?); foo(…B?) && (i < 2); foo(…C?)) { i++; foo(…D?); } } } _____ABDCBDCB___________________________________________________ 1.class A {

protected int method1(int a, int b) { return 0; } } 以下A扩展类中的方法哪两个是正确的:(选择两个) A.public int method1(int a, int b) { return 0;} B.private int method1(int a, int b) { return 0;} C.private int method1(int a, long b) { return 0;} D.public short method1(int a, int b) { return 0;} E.static protected int method1(int a, int b) { return 0;} ____AD___________________________________________________ 1.public class Outer{ public void someOuterMethod() { // Line 3 } public class Inner{} public static void main(String[] args) { Outer o = new Outer(); // Line 8 } } 下列哪一个对Inner类实例化的描述是正确的?D A.new Inner(); // At line 3 B.new Inner(); // At line 8 C.new o.Inner(); // At line 8 D.new Outer.Inner(); // At line 8//new Outer().new Inner() 1. 5. 下面这个程序正确吗? 如果不正确请说出哪里错误。 public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++;

Android开发笔试题.docx

Android 应用开发笔试 姓名 :_____________联系电话:_____________得分:_____________ 共100分,考试时间40 分钟 一、选择题(30题,每题 1.5 分,共45分 ) A 、输入流和输出流B、字节流和字符流C、节点流和处理流 D 、File stream E、 Pipe stream F、Random stream 2. 下列代码的执行结果是:() public class Test3{ public static void main(String args[]){ } G、 Filter stream } B、 A 、1,1B、 1,1.0 C、 1.0,1 D 、1.0,1.0盖。 3.在继承中,关于构造方法的说明,下列说法错误的是() C、子类无条件的继承父类的无参构造方法, D、子类可以引用父类中的有参构造方法,使用super 关键字, E、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, F、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为 ( ) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) else } } A 、 Not equal B、Equal C、无输出 D 、编译出错 5.Java语言中字符串“学Java ”所占的内存空间是() A. 6个字节 B. 7个字节 C. 10个字节 D. 11个字节 6.Java语言中 A. 1,2,4,4,4,8byte 、short、int、float、double、long B.1,2,48,8,8 C.1,1,4,4,8,8 D.1,2,4,4,8,8 分别是几个字节() 7. 关于下列程序段的输出结果,说法正确的是:() public class MyClass{ static int i; public static void main(Stringargv[]){ } } A 、有错误,变量i 没有初始化。B、null C 、 1 D 、 0 8.下列哪些语句关于内存回收的说明是正确的? () A 、程序员必须创建一个线程来释放内存

android面试题关于ui四大主键

笔试一般都是java基础 Java知识点包括:接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义,很无语。 这里具体说一下android面试题目: 南京WSCX: 1、 Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法? 生命周期:oncreate onStart onStop onPause onResume onDestory OnPause onCreate onStart onstop onResume 2、 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放? B的Mediaplay.get(播放歌曲,播放时间)保存到intent A if(播放歌曲&&播放时间有值) { MediaPaly(ss,dd); } 3、 Service有哪些启动方法?有什么区别? Service的启动方法有onstartServivr onbindService Start方法是先调用oncreate onstart 但是如果最后不调用onstop方法那么就算是activity 呗回收了也还是会运行 但是bind 是先后调用oncreate onbind 如果不调用onstop放法那么在activity被回收的时候就会被关闭 4、 (音乐播放器)如何加载的音乐信息,如何改善其效率。 构造SimpleAdapter - ListView 5、 电话状态的监听,改变打电话界面(听说我改动的Phone源码就不再问了)。 6、 ListView如何提高其效率? 7、 还有一些都是在上面的基础上扩展的,跟具体项目有关,就不说了。 总结:他们只是问一问这些基础的知识,都是给外包公司招人,自己做不了主,也就是检验一下应聘人员懂不懂android。 南京SL: 1、 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?2、 启动一个Activity有哪几种方法? Intent intent = new Intent(this,FirstActivity.class)

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面试题

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

android笔试题及答案

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

2016最新Android常见面试题

1.横竖屏切换时候activity 的生命周期 1). 不设置Activity 的android:configChanges 时, 切屏会重新调用各个生命周期, 切横屏时会执行一次, 切竖屏时会执行两次. 2). 设置Activity 的Android:configChanges=‖orientation‖ 时, 切屏还是会重新调用各个生命周期, 切横、竖屏时只会执行一次. 3). 设置Activity 的Android:configChanges=‖orientation|keyboardHidden‖ 时, 切屏不会重新调用各个生命周期, 只会执行onConfigurationChanged 方法 . 2.android 中的动画有哪几类,它们的特点和区别是什么? 两种,一种是Tween 动画、还有一种是Frame 动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化; 另一种Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 3. 一条最长的短信息约占多少byte? 中文70( 包括标点) ,英文160 ,160 个字节。 4.handler 机制的原理 andriod 提供了Handler 和Looper 来满足线程间的通信。Handler 先进先出原则。Looper 类用来管理特定线程内对象之间的消息交换(Message Exchange) 。 1)Looper: 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 消息队列) 。 2)Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里; 或者接收Looper 从Message Queue 取出) 所送来的消息。 3) Message Queue( 消息队列): 用来存放线程放入的消息。 4) 线程:UI thread 通常就是main thread ,而Android 启动程序时会替它建立一个Message Queue 。 5. 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

Android面试题集合(含答案)

云时代 Android面试题集[键入文档副标题]

目录 第一章Android最全面试题71道题 (55) 一、选择题 (55) 二.填空和问答 (1212) 25. android中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、LinerLayout(线 性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) (1212) 26. android 的四大组件是__Activity Service BrodcastReceiver ContentProvier。1212 27. java.io包中的__ObjectInputStream_和_ObjectOutputStream_类主要用于对对象(Object)的读写。 (1212) 28. android 中service的启动方法有:__startService____bindService_ (1212) 29. activity一般会重载7个方法用来维护其生命周期,分别是:onCreate onStart onResume onPause onStop onDestroy onRestart (1212) 30. android的数据存储的方式有:SharedPreferences数据存储、文件存储、SQLite数据库存储数据、 Contentprovider存储数据、网络存储数据 (1212) 31. 当启动一个Activity 并且新的Activity 执行完后需要返回到启动它的Activity 数据,启动新 Activity的方法是_startActivityForResult(intent,RequestCode)_,用来处理返回数据的Activity回调函 数是void onActivityResult(int requestCode,int resultCode,intent data)_。 (1313) 33.下面程序运行的结果是:______________。 (1313) 34. 在android中,请简述jni的调用过程。 (1414) 35. 简述Android的体系结构包括哪些? (1414) 36. 请继承SQLiteOpenHelper实现下述功能 (1414) 37. 页面上现有ProgressBar 控件progressBar,请用书写线程以10秒的的时间完成其进度显示工 作。 (1515) 38. 请描述Activity 的生命周期。 (1616) 39. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?1717 40. 如何将一个Activity 设置成对话框窗口的样式。 (1717) 41. 如何退出Activity?如何安全退出已调用多个Activity 的Application? (1717) 43. 请介绍下Android的数据存储方式。 (1919) 44. 请介绍下ContentProvider是如何实现数据共享的。 (1919) 45. 如何启用Service,如何停用Service。 (2020) 46. 注册广播接收器有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。 .......................................................................... 错误!未定义书签。错误!未定义书签。 47. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。错误!

相关主题