Android面试知识----基础篇

1.Activity 生命周期
  • onCreate:创建,初始化
  • onStart:Activity正在启动,此时已处于可见状态,但是没有在前台显示;即Activity已显示,但是无法看见
  • onResume:Activity已在前台可见,可与用户交互
  • onPause:Activity正在停止;onPause方法执行完成后,新Activity的onResume方法才会被执行
  • onStop:Activity不可见,再后台
  • onRestart:Activity由不可见变为可见时,调用
  • onDestroy:销毁Activity
2.Activity A 启动Activity B 各自生命周期(A被B完全覆盖)
  • 1.A onCreate
  • 2.A onStart
  • 3.A onResume
  • 4.A onPause
  • 5.B onCreate
  • 6.B onStart
  • 7.B onResume
  • 8.A onStop

此时点击返回,各自生命周期:

  • B onPause
  • A onRestart
  • A onStart
  • A onResume
  • B onStop
  • B onDestroy
3.Activity A 启动Activity B 各自生命周期(A没有被B完全覆盖)
  • A onPause
  • B onCreate
  • B onStart
  • B onResume

点击返回:

  • B onPause
  • A onResume
  • B onStop
  • B onDestroy
4.Fragment 生命周期
  • onAttach :fragment关联到activity,这个时候activity已经传进来,可以获得Activity传来的值
  • onCreate :创建fragment
  • onCreateView :加载Fragment布局,尽量不要写耗时操作,越快越好
  • onActivityCreated :当Activity中的onCreate方法执行完后调用,在onActivityCreate()调用之前,activity的onCreate还没有完成,所以不能在onCreateView中进行与Activity有交互的UI操作,UI交互操作可以放在onActivityCreated里进行
  • onStart :Fragment可见
  • onResume :Fragment进入前台,可获取焦点时激活
  • onPause :用户离开这个Fragment
  • onStop :Fragment不可见
  • onDestroyView :Fragment中布局被移除,销毁相关联的UI布局,清除所有和视图相关的资源
  • onDestroy :销毁Fragment对象
  • onDetach :Fragment 和Activity解除关联
5.Fragment add 和replace 的区别

Fragment展示的两种方法:

  • replace :会调用Fragment的生命周期,也就是说它会销毁视图,重新加载
  • add hide :就是显示隐藏Fragment,会走onHiddenChanged 方法
6.Activity启动模式
  • standard:默认启动模式,即标准模式;每次启动一个Activity都会重写创建一个新的实例;
  • singleTop:栈顶复用模式;如果新的Activity已经位于栈顶,那么这个Activity不会被重新创建,同时它的onNewIntent方法调用;standard和singleTop启动模式都是在原任务栈中新建Activity实例,不会启动新的task
  • singleTask:栈内复用模式;如果栈中存在这个Activity的实例就会复用这个Activity,不管它是否位于栈顶,复用时会将它上面的Activity全部出栈,并且会回调该实例的onNewIntent
  • singleInstance:全局唯一模式;该模式具备singleTask所有特性,区别是,这种模式下Activity会单独占用一个Task栈,具有全局唯一性
7.强引用、软引用、弱引用
  • 强引用:内存不足,也不会回收
  • 软引用(SoftReference):如果内存不足,会回收
  • 弱引用(WeakReference):JVM进行垃圾回收时,不管是否内存不足,都会回收
  • 虚引用(PhantoReference):必须和引用队列关联使用
8.Service 启动方式
  • startService():
    • 生命周期:onCreate-->onStartCommand-->onDestory
    • 如果服务已启动,则不会重复执行onCreate,而是会调用onStart和onStartCommand
    • 一旦服务开启,和开启者就没有任何关系;开启者不能调用服务里的方法
  • bindService():
    • 生命周期:onCreate-->onBind-->onUnBind-->onDestroy
    • 绑定服务不会调用onStart或者onStartCommand
    • bind方式开启服务,绑定服务,如果绑定者挂掉,服务也会跟着挂掉;绑定者可以调用服务里面的方法
9.View绘制流程
  • measure:从顶层父view向子view递归调用view.measure
  • layout
  • draw
10.Touch事件传递机制
  • dispatchTouchEvent:分发event
  • onInterceptTouchEvent:拦截event;返回true表示拦截,事件将终止向下传递
  • onTouchEvent:处理event;返回true表示处理该事件,事件将终止向上传递
11.几种动画
  • FrameAnimation:逐帧动画;将多张图片组合起来播放
  • TweenAnimation:补间动画;对某个view进行一系列动画,如淡入淡出(Alpha),缩放(Scale),平移(Translate),旋转(Rotate)
  • PropertyAnimation:属性动画;对目标对象进行赋值并修改其属性来实现动画
12.Handler,Looper,Message

http://blog.csdn.net/lmj623565791/article/details/38377229

  • Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象;Looper.prepare()在一个线程中只能调用一次,所以MessageQueue在一个线程中只会存在一个;
  • Looper.loop()会让当前线程进入一个无线循环,不断从MessageQueue的实例中读取消息,然后回调msg.target.dispatchMessage(msg)方法;
  • Handler的构造方法,会首先得到当前线程中保存的Looper实例,然后与Looper实例中的MessageQueue相关联;
  • Handler的SendMessage方法,会给msg的target赋值为handler自身,然后加入MessageQueue;
  • 在构造Handler实例时,我们会重写handlerMessage方法,也就是msg.target.dispatchMessage(msg)最终调用的方法;
  • Activity启动时,会在当前UI线程调用Looper.prepare()和Looper.loop().

你可能感兴趣的:(Android面试知识----基础篇)