嗨!又和大家见面了(每次都是这个开场白有点瓜,,下次换一个-。+),之前我们介绍过Activity,他在UI显示和用户交互的过程中起着重要的作用,但是除了Activity之外,我们还有一个类,也负责同样的功能,他就是Fragment,相信大家也用到过,今天我们详细的讲解一下这个Fragment类。
一、产生意义
1.为了适配不同尺寸的手机以及平板和手机的适应。
这个应该很好理解:我们以前在做应用开发时候,首先需要先针对手机开发一套App,然后在针对平板的尺寸开发另一套App(布局修改),但是这样很捞啊,不但麻烦,而且也做了很多无用功,而Fragment的出现完美的解决了这个问题:Fragment可以被放在Activity的布局中,使我们的视图是由一块块Fragment组成的,这样我们可以根据尺寸的不同进行Fragment的调整。从而解决上述问题。
2.减轻Activity负担。
Fragment也是有自己的生命周期的,而且由于跟Activity绑定,有些生命周期是和Activity同步的(onStart、onResume之类),所以我们的一些在Activity进行用户操作的逻辑代码,可以写到Fragment中,减少了Activity的代码量。
二、生命周期
直接上图可能更明确些:
这里有两张图(反正都不是我画的-。+,但是这两张图是真的棒,所以我粘贴过来了):
第一张是Fragment相对比较完整的生命周期,我们注意到当Fragment即将失去焦点时(绿色方框下面),他有两种情况,一种是将Fragment添加到退回栈(back Stack),还有一种情况是没有添加。他们在进行到onDestroyView方法之后生命周期是不相同的,这里只是稍微提一下,今天我们讲的不涉及到退回栈。
第二张图是Activity生命周期方法和Fragment生命周期方法的联系,我们注意到中间的几个方法Activity和Fragment是同步的。
接下来简单地描述一下相关生命周期方法:
- onAttach:让Fragment和Activity关联,此时关联的Activity已经被传进来,可以通过getActivity获取Activity实例(但是有些时候使用需要强转)。
- onCreate:在Fragment实例被创建时候调用。
- onCreateView:Fragment视图创建过程。
- onViewCreated:当onCreateView方法返回后立即调用,此时Fragment的层次结构还没有添加到父节点上(这个方法一般没有被提到,但是我想在这里提一下。)
- onActivityCreated:当Activity创建完成,而且该Fragment的层次结构也被实例化,调用。
- onStart:在Fragment可见的时候调用,通常与Activity的生命周期相关联。
- onResume:当Fragment可见而且可获取焦点时调用,通常与Activity的生命周期相关联。
- onPause:当Fragment失去焦点时调用,通常与Activity的生命周期相关联。
- onStop:当Fragment不可见时候调用,通常与Activity的生命周期相关联。
- onDestroyView:当Fragment与其先前创建的视图分离时调用