如果我是Android面试官二

呼,明明感觉很累,但是看眼日历今天才周三。因开会耽误了晚间的跑步,早点到家来更一篇吧。

四 Fragment用吗,简单的说说你对它的理解

Fragment主要是用于一个Activity的多元化。有时候根据产品需求,要求一个页面能够根据配置展示不同的样式和排版。这时就是Fragment大显身手的的时候了。常用添加方法还是动态添加。通过FragmentManager获取transaction,通过transaction添加到指定布局上,之后提交transaction。

小技巧:如果想让fragment也有返回栈的效果,需要在transaction替换布局之后,提交之前,加上一句addToBackStack(null)。之后再按返回键发现fragment也进入返回栈了。

Fragment经常拿来和Activity作对比,因为二者有着极其相似的功能以及生命周期,但是却又细有区别。

Fragment的生命周期同样可以分为四种状态

1 运行状态

当一个碎片是可见的,并且它所关联的活动也正处于运行状态,该碎片也处于运行状态。

2 暂停状态

当一个活动进入暂停状态时,与之关联的碎片也进入暂停状态。

3 停止状态

当一个活动进入停止状态时,与之关联的碎片也进入停止状态。或者通过调用transaction的remove,replace等方法将碎片从活动中移除。总的来说,进入停止状态的碎片对用户来说是完全不可见的,有可能被系统回收。

4 销毁状态

碎片总是依附于活动,当活动被销毁时,碎片也进入销毁状态。或者使用transaction将碎片移除时,也会进入销毁状态。

相比于活动的生命周期回调方法,碎片增加了额外的方法

onAttach方法。当碎片和活动建立关联时调用。

onCreateView方法。为碎片创建视图时调用。

onActivityCreated方法。确保与碎片相关联的活动一定已经创建完毕时调用。

onDestroyView方法。当与碎片关联的视图被移除时调用。

onDetach方法。当碎片和活动解除关系的时候调用。

一套完整的fragment加载流程为onAttach、onCreate、onCreateView、onActivityCreated、onStart、onResume。

之后移除onPause、onStop、onDestroyView、onDestroy、onDetach。


猜你喜欢

转载自blog.csdn.net/kongou/article/details/80517250