Q1:谈一谈Fragment的生命周期?
Q2:Activity和Fragment的异同?
Q3:Activity和Fragment的关系?
Q4:何时会考虑使用Fragment?

A:同一个屏幕上可以放多个Fragment,它可以实现对用户界面和功能的重用。

Q1:谈一谈Fragment的生命周期?

面试题二:组件之Fragment系列

是不是能发现Fragment和Activity的生命周期太相似了,现在只需要再介绍几个Activity中没讲过的新方法:

onAttach():当Fragment和Activity建立关联时调用
onCreateView():当Fragment创建视图时调用
onActivityCreated():当与Fragment相关联的Activity完成onCreate()之后调用
onDestroyView():在Fragment中的布局被移除时调用
onDetach():当Fragment和Activity解除关联时调用

在上图中画了几条线,可以看到Fragment周期中的状态几乎都是成对出现的,所以不难理解下图几种变化下Fragment生命周期方法的调用顺序了。

查看文章

Q2:Activity和Fragment的异同?

  • 1、Fragment是到Android3.0+ 以后,Android新增了Fragments,在没有 Fragment 之前,一个屏幕只能放一个 Activity。
  • 2、Activity 代表了一个屏幕的主体,而Fragment可以作为Activity的一个组成元素。一个Activity可以有若干个Fragment构成。你可以把Fragment想象成Activity中的一个控件,只不过相对于一般控件,Fragment与Activity联系更为紧密,随着Activity的生命周期变化,Fragment也随之相应不同的生命周期函数。
  • 3、Fragment 从功能上讲相当于一个子活动(Activity),它可以让多个活动放到同一个屏幕上,也就是对用户界面和功能的重用,因为对于大屏设备来说,纯粹的 Activity 有些力不从心。Fragment 像是一个子活动,但是 Fragment 不是 Activity 的扩展,因为 Fragment 扩展自 android.app 中的 Object,而 Activity 是 Context 的子类。Fragment 有自己的视图层级结构,有自己的活动周期,还可以像活动一样响应后退按钮,Fragment 还有一个用作其初始化参数的包(Bundle),类似 Activity,Fragment 也可由系统自动保存并在以后还原。当系统还原 Fragment 时,它调用默认的构造函数(没有参数),然后将此Bundle还原到新创建的 Fragment 中,所以无论新建还是还原 Fragment,都要经过两个步骤:(1)调用默认构造函数(2)传入新的或者保存起来的Bundle。
  • 4、一个Activity可以运行多个 Fragment,Fragment 切换时,由 FragmentTransaction 执行,切换时,上一个 Fragment 可以保存在后退栈中(Back Stack),这里的后退栈由 FragmentManager 来管理,注意 Fragment 和 Activity 的后退栈是有区别的:Activity 的后退栈由系统管理,而 Fragment 的后退栈由所在的Activity 管理。
  • 5、Fragment不能脱离Activity而存在,只有Activity才能作为接收intent的载体。其实两者基本上是载体和组成元素的关系。

查看文章

很多项目大量使用Fragment做视图,组装更灵活,开销比Activity小。

通俗讲,系统开销就是花费,即花了多少时间空间。例如,程序运行时间与占用内存大小等

 

Android Fragment 真正的完全解析(上)

 

相关文章:

  • 2021-04-29
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-19
  • 2021-09-18
猜你喜欢
  • 2021-10-22
  • 2021-06-18
  • 2021-12-01
  • 2022-02-21
  • 2021-07-20
  • 2021-11-22
  • 2021-08-06
相关资源
相似解决方案