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:利用反射,好用不要钱 ,目前个人觉得最好的方案。(相互私聊)