Android培训
美国上市Android培训机构

400-111-8989

热门课程

Android 面试常问七道题

  • 时间:2017-09-12
  • 发布:Android培训
  • 来源:Android职场

一、Android的四大组件以及作用

Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。

service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的动作,定义好需要接受的Intent提供同步和异步的接口。

Content Provider:是Android提供的第三方应用数据的访问方案,对外提供数据,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用对数据的整合提供了更方便的途径。

BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。

二、描述下Activity的生命周期?

Activity的生命周期方法有:onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、onDestory();

可见生命周期:从onStart()直到系统调用onStop()

前台生命周期:从onResume()直到系统调用onPause()

屏幕旋转时的Activity生命周期:

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

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

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

三、ListView优化有哪几种方式?

1、ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局。

2、RelativeLayout是绝对的利器,通过它可以减少布局的层次。

3、同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数。

4、ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能。

5、getView方法中不能做复杂的逻辑计算,特别是数据库操作,否则会严重影响滑动时的性能。

四、解释下Handler的运行机制?

Message,理解为线程间交流的信息

Handler,是Message的主要处理者,负责Message的发送和执行处理

Message Queue,用来存放通过Handler发布的消息,按照先进先出执行

Looper ,是每条线程里的Message Queue的管家

Handler一般在主线程中创建,子线程通过处理器对象的sendMessage发消息到

MessageQueue(消息队列)里,主线程中已经包含了一个Looper(轮循器),Looper是死循环的,会一直轮询消息队列,看是否有Message(消息) ,如果有,轮询器会把消息对象传给Handler(消息处理器),然后调用handlerMessage处理该消息,进而更新UI。

五、什么是ANR?如何避免ANR异常?

ANR:Application Not Responding。在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当用户操作的在5s内应用程序没能做出反应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框,就是ANR。

避免方法:Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者异步方式)来完成。主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。

六、Android中三种动画,特点和区别是什么?

Android 中的动画有帧动画,补间动画,属性动画。

帧动画:一张张图片不断的切换,形成动画效果,类似小时候的电影。很多应用的loading是采用这种方式。

补间动画:是对某个View进行一系列的动画的操作,包括淡入淡出(Alpha),缩放(Scale),平移(Translate),旋转(Rotate)四种模式。

属性动画:属性动画不再仅仅是一种视觉效果了,而是一种不断地对值进行操作的机制,并将值赋到指定对象的指定属性上,可以是任意对象的任意属性。

七、注册广播有几种方式,有何优缺点?

第一种:在清单文件中声明,添加

<receive android:name=".IncomingSMSReceiver " >

<intent-filter>

<action android:name="android.provider.Telephony.SMS_RECEIVED")

<intent-filter>

<receiver>

第二种使用代码进行注册:

IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

IncomingSMSReceiver receiver = new IncomgSMSReceiver();

registerReceiver(receiver.filter);

两种注册类型的区别是:

1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。

2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

上一篇:Android面试知识点总结-Android篇
下一篇:Android 开发者,如何在移动开发寒冬中快速提升职场竞争力?

Android面经:好未来+CVTE+美团+58+京东

记一次失败的Android岗面试

Android 开发工程师 2017 面试题整理

给 Android 开发者的 31 个 Pro 版进阶小贴士

选择城市和中心
贵州省

广西省

海南省