当前位置:文档之家› 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()进行设置。

相关主题