zoukankan      html  css  js  c++  java
  • Android 面试常问七道题

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

    Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。
    service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的动作,定义好需要接受的Intent提供同步和异步的接口。
    Content Provider:是Android提供的第三方应用数据的访问方案,对外提供数据,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用对数据的整合提供了更方便的途径。
    BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。

    2、描述下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方法。

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

    1、ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局。
    2、RelativeLayout是绝对的利器,通过它可以减少布局的层次。
    3、同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数。
    4、ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能。
    5、getView方法中不能做复杂的逻辑计算,特别是数据库操作,否则会严重影响滑动时的性能。

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

    Message,理解为线程间交流的信息
    Handler,是Message的主要处理者,负责Message的发送和执行处理
    Message Queue,用来存放通过Handler发布的消息,按照先进先出执行
    Looper ,是每条线程里的Message Queue的管家

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

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

    ANR:Application Not Responding。在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当用户操作的在5s内应用程序没能做出反应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框,就是ANR。
    避免方法:Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者异步方式)来完成。主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。

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

    Android 中的动画有帧动画,补间动画,属性动画。
    帧动画:一张张图片不断的切换,形成动画效果,类似小时候的电影。很多应用的loading是采用这种方式。
    补间动画:是对某个View进行一系列的动画的操作,包括淡入淡出(Alpha),缩放(Scale),平移(Translate),旋转(Rotate)四种模式。
    属性动画:属性动画不再仅仅是一种视觉效果了,而是一种不断地对值进行操作的机制,并将值赋到指定对象的指定属性上,可以是任意对象的任意属性。

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

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

    第二种使用代码进行注册:
    IntentFilter filter = new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);IncomingSMSReceiver receiver = new IncomgSMSReceiver();registerReceiver(receiver.filter);

    两种注册类型的区别是:
    1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。
    2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

    8、总结

    最近,群里好多人都在讨论面试题,这边趁此机会简单列举一些当初我去面试时常问到的一些Android题,刚好有的同学需要。同时,我也自己总结一下,当初面试被问到的几个题目,也为以后想跳槽到更好的岗位,提前做一些准备。
    最后,这里奉上自己很喜欢的两份简历模板,有需要的同学,微信公众号后台回复 “简历模板” 。

    推荐阅读:
    福利篇:学习编程视频免费领取
    传感器实现仿微信摇一摇功能
    Retrofit常见注解全解析

  • 相关阅读:
    CHAR和HEX互相转换
    Delphi之TComponent类
    Delphi 延迟函数 比sleep 要好的多
    Delphi中三种延时方法及其定时精度分析
    Cport 应用集合
    重命名数据库时提示无法用排他锁锁定数据库
    Bugzilla在XP下安装
    Web service 超过了最大请求长度
    调用webservice时提示对操作的回复消息正文进行反序列化时出错
    c# IL 指令解析
  • 原文地址:https://www.cnblogs.com/cxyquan/p/9746589.html
Copyright © 2011-2022 走看看