Actiity

1.Activity生命周期



  • onCreate():当Activity第一次创建的时候调用。
  • onStart():Activity已经显示,但没有焦点。
  • onResume():Activity可以进行交互了。
  • onPause():Activity失去焦点,无法再与用户交互,但可见。
  • onStop():Activity不可见状态。
  • onDestroy():Activity被销毁。
  • onRestart():Activity从不可见变成可见时会执行此方法。

2.Activity的四种启动模式(每次看完网上的解释,然后,然后呢.....?)

  • standard :每次启动activity都会创建一个activity实例,不管它是否存在
  • singleTop :当启动activity的时候,如果该activity不在栈顶,会创建一个activity实例,如果他在栈顶存在,执行他的onNewIntent()
  • singeTask :第一次启动创建实例,以后再启动执行他的onNewIntent()操作,并销毁栈中在他上面的其他实例
  • singleInstance:第一次启动创建实例,在启动执行onNewIntent(),并且单独在一个栈中。
onNewIntent()的执行(非生命周期中):
  • 启动模式singletop(当前activity在栈顶时)以及 singletask会调用onNewIntent()。
四种模式适用的情况:
  • standard:用的最多的默认的跳转。
  • singleTop:1.接收通知后跳转显示页面 2.搜索界面自己跳转自己调用onNewIntent()。
  • singeTask : 反正就一个。(登陆页面?主页?)
  • singleInstance : 一次性玩具?
  • 额外补充一个 Intent.FLAG_ACTIVITY_CLEAR_TASK : 清除所有栈中老的Activity(清道夫?)。

3.未知,待补充。。。。。


Fragment(碎片)

1.Fragment是依赖于Activity的,不能独立存在的!!!

有次面试,面试官问了一个问题,我蒙蔽了半天 :fragment能否独立存在。what fk is that ?!



按理说是不能的,但看着面试官邪恶的表情,我居然说:应该不能。。。可怕 ,告辞

2.Fragment的生命周期

  • onAttach():Fragment和Activity相关联时调用。可通过该方法获取Activity引用,还可通过getArguments()获取参数。
  • onCreate():Fragment被创建时调用。
  • onCreateView():创建Fragment的布局。
  • onActivityCreated():当Activity完成onCreate()时调用。
  • onStart():当Fragment可见时调用。
  • onResume():当Fragment可见且可交互时调用。
  • onPause():当Fragment不可交互但可见时调用。
  • onStop():当Fragment不可见时调用。
  • onDestroyView():当Fragment的UI从视图结构中移除时调用。
  • onDestroy():销毁Fragment时调用。
  • onDetach():当Fragment和Activity解除关联时调用。



3.Fragment与Activity的混合生命周期

  • onCreate()
    Activity onCreate...
    Fragment onAttach...
    Fragment onCreate...
    Fragment onCreateView...
    Fragment onActivityCreated...
  • onDestroy()
    Fragment onDestroyView...
    Fragment onDestroy...
    Fragment onDetach...
    Activity onDestroy...
  • 除此之外初始化的生命周期都是activity先走,pause()等都是fragment先走。

4.Fragment与Activity相互私聊

  • Handle : 在Activity中定义一个handle并且在fragment 的onAttach()生命周期中获取 (fragment通知Activity)。
  • 广播(????呵呵) (相互私聊)
  • 接口方案: 与Handle方案相似。(fragment通知Activity)
  • context强转activity调用方法。(fragment通知Activity)
  • 观察者模式(也只能单向????)
  • EventBus:利用反射,好用不要钱 ,目前个人觉得最好的方案。(相互私聊)

5.未知,待补充。。。。。