fragment必须是依存于activity而存在的,因此activity的生命周期会直接影响到fragment的生命周期。官网这张图很好的说明了俩者的关系:
可以看到fragment比activity多了几个额外的生命周期回调函数:
1
2
3
4
5
6
7
8
9
|
onattach(activity); //当activity与fragment发生关联时调用 oncreateview(layoutinflater,viewgroup,bundle); //创建该fragment的视图 onactivitycreate(bundle); //当activity的oncreate();方法返回时调用 ondestoryview(); //与oncreateview相对应,当改fragment被移除时调用 ondetach(); //与onattach()相对应,当fragment与activity的关联被取消时调用 |
注意:除了oncreateview,其他的所有方法如果你重写了,必须调用父类对于该方法的实现。
场景演示 :
切换到该fragment
1
2
3
4
5
6
|
11 - 29 14 : 26 : 35.095 : d/applistfragment( 7649 ): onattach 11 - 29 14 : 26 : 35.095 : d/applistfragment( 7649 ): oncreate 11 - 29 14 : 26 : 35.095 : d/applistfragment( 7649 ): oncreateview 11 - 29 14 : 26 : 35.100 : d/applistfragment( 7649 ): onactivitycreated 11 - 29 14 : 26 : 35.120 : d/applistfragment( 7649 ): onstart 11 - 29 14 : 26 : 35.120 : d/applistfragment( 7649 ): onresume |
屏幕灭掉:
1
2
3
|
11 - 29 14 : 27 : 35.185 : d/applistfragment( 7649 ): onpause 11 - 29 14 : 27 : 35.205 : d/applistfragment( 7649 ): onsaveinstancestate 11 - 29 14 : 27 : 35.205 : d/applistfragment( 7649 ): onstop |
屏幕解锁
1
2
|
11 - 29 14 : 33 : 13.240 : d/applistfragment( 7649 ): onstart 11 - 29 14 : 33 : 13.275 : d/applistfragment( 7649 ): onresume |
切换到其他fragment:
1
2
3
|
11 - 29 14 : 33 : 33.655 : d/applistfragment( 7649 ): onpause 11 - 29 14 : 33 : 33.655 : d/applistfragment( 7649 ): onstop 11 - 29 14 : 33 : 33.660 : d/applistfragment( 7649 ): ondestroyview |
切换回本身的fragment:
1
2
3
4
|
11 - 29 14 : 33 : 55.820 : d/applistfragment( 7649 ): oncreateview 11 - 29 14 : 33 : 55.825 : d/applistfragment( 7649 ): onactivitycreated 11 - 29 14 : 33 : 55.825 : d/applistfragment( 7649 ): onstart 11 - 29 14 : 33 : 55.825 : d/applistfragment( 7649 ): onresume |
回到桌面
1
2
3
|
11 - 29 14 : 34 : 26.590 : d/applistfragment( 7649 ): onpause 11 - 29 14 : 34 : 26.880 : d/applistfragment( 7649 ): onsaveinstancestate 11 - 29 14 : 34 : 26.880 : d/applistfragment( 7649 ): onstop |
回到应用
1
2
|
11 - 29 14 : 36 : 51.940 : d/applistfragment( 7649 ): onstart 11 - 29 14 : 36 : 51.940 : d/applistfragment( 7649 ): onresume |
退出应用
1
2
3
4
5
|
11 - 29 14 : 37 : 03.020 : d/applistfragment( 7649 ): onpause 11 - 29 14 : 37 : 03.155 : d/applistfragment( 7649 ): onstop 11 - 29 14 : 37 : 03.155 : d/applistfragment( 7649 ): ondestroyview 11 - 29 14 : 37 : 03.165 : d/applistfragment( 7649 ): ondestroy 11 - 29 14 : 37 : 03.165 : d/applistfragment( 7649 ): ondetach |
比activity多了一些生命周期,完整和activity对接上,大家好好利用。