Android Fragment 碎片

Frament

    • 简介
    • 优势
    • 核心类
    • 生命周期

你好!

简介

Fragment,是Android 3.0(API 11)提出的,起初是为了解决Andorid 的碎片化,而其简称碎片。为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。
过去support-v4库是一个jar包,24.2.0版本开始,将support-v4库模块化为多个jar包,包含:support-fragment, support-ui, support-media-compat等,这么做是为了减少APK包大小,你需要用哪个模块就引入哪个模块。
如果想引入整个support-v4库,则compile ‘com.android.support:support-v4:24.2.1’,如果只想引入support-fragment库,则com.android.support:support-fragment:24.2.1。

因为support库是不断更新的,因此建议使用support库中的android.support.v4.app.Fragment,而不要用系统自带的android.app.Fragment。而如果要使用support库的Fragment,Activity必须要继承FragmentActivity(AppCompatActivity是FragmentActivity的子类)。

Fragment官方的定义是:

Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running.

根据上面的定义可知:

  • Fragment是依赖于Activity的,不能独立存在的。
  • 一个Activity里可以有多个Fragment。
  • 一个Fragment可以被多个Activity重用。
  • Fragment有自己的生命周期,并能接收输入事件。
  • 我们能在Activity运行时动态地添加或删除Fragment。

Android 3.0系统只针对平板电脑,且闭源,那时候针对手机和针对平板是两套源代码,后来Android
4.0时整合了手机和平板的源码,因此市面上很难看到Android 3.0系统。

优势

  • 模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。
  • 可重用(Reusability):多个Activity可以重用一个Fragment。
  • 可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。

核心类

  • Fragment:Fragment的基类,任何创建的Fragment都需要继承该类。
  • FragmentManager:管理和维护Fragment。他是抽象类,具体的实现类是- FragmentManagerImpl。
  • FragmentTransaction:对Fragment的添加、删除等操作都需要通过事务方式进行。他是抽象类,具体的实现类是BackStackRecord。
  • Nested Fragment(Fragment内部嵌套Fragment的能力)是Android
    4.2提出的,support-fragment库可以兼容到1.6。通过getChildFragmentManager()能够获得管理子Fragment的
  • FragmentManager,在子Fragment中可以通过getParentFragment()获得父Fragment。

生命周期

Fragment的生命周期和Activity类似,但比Activity的生命周期复杂一些,基本的生命周期方法如下图:
Android Fragment 碎片_第1张图片
解释如下:

  • 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解除关联时调用。

上面的方法中,只有onCreateView()在重写时不用写super方法,其他都需要。
因为Fragment是依赖Activity的,因此为了讲解Fragment的生命周期,需要和Activity的生命周期方法一起讲,即Fragment的各个生命周期方法和Activity的各个生命周期方法的关系和顺序,如图:
Android Fragment 碎片_第2张图片
启动Fragment:onAttach()–>onCreate()–>onCreateView()–>onActivityCreated()–>onStart()–>onResume()
息屏状态:onPause()–>onStop()
重新点亮屏幕:onStart()–>onResume()
退出:onPause()–>onStop()–>onDestroyView()–>onDestroy()–>onDetach()
Fragment被回收又重新创建(横竖屏切换):被回收执行onPause()–>onSaveInstanceState()–>onStop()–>onDestroyView()–>onDestroy()–>onDetach(),重新创建执行onAttach()–>onCreate()–>onCreateView()–>onActivityCreated()–>onStart()–>onResume();

我是入梦,谢谢你的观看我的博客,如果有什么错误,请随时联系我,QQ:897589417

你可能感兴趣的:(名词解释,Android)