onStart()和onResume()/onPause()和onStop()的区别?
先看一下官方声明周期图
activity_lifecycle.png
这里应用场景:一般启动app:
onCreate -onStart() - onResume
按一下home 键:onPause-onStop
再从其他页面返回到LoginActivtiy:
-onNewIntent- onRestart -onStart -onResume
2.onCeate vs onStart vs onResume
看stackoverflow上回答:
https://stackoverflow.com/questions/6812003/difference-between-oncreate-and-onstart
onCreate :
called when the actiivty first created,do create views bind data to list etc.
参数Bunldel上次被异常情况销毁时保存的状态信息
3.onStart()和onResume()/onPause()和onStop()的区别?
onStart /onStop 从可见的角度回调的; 而onResume/onPasue 从是否位于前台的角度回调的,而在实际应用中没什么区别。
总之,记住
onStart 可见不可点击 onResume 可见可点击;
onPause 可见不可点击(比如弹出对话框)
onStop 不可见
4.Activity A启动另一个Activity B会回调哪些方法?
如果Activity B是完全透明呢?如果启动的是一个Dialog呢?
一般情况,当用户打开一个新的界面或是回到桌面,回调:
onPause -->onStop();
如果透明:onStop()不再调用(启动一个透明主题的ActivityB,因为ActivityA还是可见的,但不在前台,)
当再次回到ActivityA时,会回调 onRestart () -->onStart()--->onResume();
5.back键:
onPause -->onStop -->onDestory;
6.当前Actiivty是A,如果用户打开一个新的ActivityB,那么B.onRsume() 和A.onPause()哪个先回调?
这个问题,要从源码分析。暂不详细说了,总之,源码里有一段话“we need to start pasuing the curent activity ,so the top one can be resumed"
即先A.onPause() ,然后B.onResume()
网友评论