• Android面试题之二

    发布:51Code 时间: 2016-11-23 16:26

  • 本篇文章继续衔接了Android面试题之一。 六、Android 中的动画有哪几种,它们的特点和区别是什么 ? 逐帧动画和补间动画。 逐帧动画:是传统的动画播放方式,指定每一帧的内容和停留...

  • 本篇文章继续衔接了Android面试题之一。

    六、Android 中的动画有哪几种,它们的特点和区别是什么 ?

    逐帧动画和补间动画。

    逐帧动画:是传统的动画播放方式,指定每一帧的内容和停留时间,然后顺序地播放排列好的图片,类似电影。

    补间动画:给出两个关键帧(初和末)和变化时间、方式,通过一些算法对View的内容在规定的时间内完成一系列的图形变换。主要包括四种效果:Alpha、Scale、Translate和Rotate。

    所以,补间动画常用来播放一些有规律的动画,而逐帧动画则不一定。

    七、请介绍下 Android 中常用的五种布局

    1.FrameLayout(帧布局)

    特点:组件都是从左上角开始放置,后面的会覆盖前面的组件,就像往墙角堆砌东西一样。布局比较简单,只能放一点比较简单的东西。

    2.LinearLayout(线性布局)

    特点:最常用的布局。分为垂直布局和水平布局。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下排列;水平布局时,只有一行,每一个元素依次向右排列。

    3.AbsoluteLayout(绝对布局)

    特点:就是用X,Y坐标来指定组件的位置,这种布局适应性太差,很少使用。

    4.RelativeLayout(相对布局)

    特点:一种非常常用的布局。相对布局是一种以某一个元素为参照物,来确定其他组件位置的布局方式。包括以某一组件为参照物和以父容器为参照物两种情况。

    5.TableLayout(表格布局)

    特点:类似Html里面的Table。用TableRow来代表表格布局中的每一行,在里面去定义每一行的元素内容和对齐方式。

    这几种布局都有自己的特点,在实际应用中,常常相互嵌套,结合使用,才能做出漂亮的界面。

    八、如何启用Service ,如何停用Service

    启动方式有两种:startService(),bindService().它们都是Context的方法。

    区别:使用startService()方法启用服务,调用者与服务之间没有关连, 即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止.

    停用:采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务。   采用bindService()方法启动的服务,调用者和服务绑定在了一起。若调用者退出,系统会调用onUnbind()方法解除绑定,然后调用onDestroy()方法。当然,开发者也可以自己调用Context.unbindService()方法手动解除绑定。接着,系统也会调用服务的onUnbind()-->onDestroy()方法。

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

    注册方式有两种:一是在代码中动态注册:registerReceiver(receiver,filter);   二是在AndroidManifest中配置。

    区别:

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

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

    注:当需要通过广播更新UI时,一般采用动态注册的方式,启动Activity时候注册BroadcastReceiver,Activity不可见时候,取消注册。

    在AndroidManifest配置还有一个缺点:由于它一直处于活动状态,cpu和电源资源耗费比较大。

    十、什么是ANR 如何避免它?

    ANR:Application Not Responding。

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

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


  • 上一篇:Android面试题之一

    下一篇:Android Nested Scrolling 实战

网站导航
Copyright(C)51Code软件开发网 2003-2019 , 沪ICP备05003035号-6