Fragment和Activity

Posted bug-mark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment和Activity相关的知识,希望对你有一定的参考价值。

最近学习Fragment一头雾水,花了很多时间,但是没有什么突破,对其理解似懂非懂,所以今天给自己准备了几个问题试着解决一下。

1、Fragment的产生背景?

       自从android 3.0中引入fragments 的概念,Google翻译为:碎片、片段。其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。

2、Fragment是什么?

       要理解Fragment是什么,就得先知道Activity是什么。你看到的每一个app页面其背后都有一个Activity,Activity完成页面的所有请求以及数据的获取和传输(通过Intent),对layout中的页面进行管理,让我想到了Java web 开发中的Servlet。好的,那到底什么是Activity呢?哦,不对,到底什么是Fragment呢?

       汉化后的官方文档:

       Fragment 表示 Activity 中的行为或用户界面部分。您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个片段。您可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段(有点像您可以在不同 Activity 中重复使用的“子 Activity”)。

       片段必须始终嵌入在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影响。 例如,当 Activity 暂停时,其中的所有片段也会暂停;当 Activity 被销毁时,所有片段也会被销毁。 不过,当 Activity 正在运行(处于已恢复生命周期状态)时,您可以独立操纵每个片段,如添加或移除它们。 当您执行此类片段事务时,您也可以将其添加到由 Activity 管理的返回栈 — Activity 中的每个返回栈条目都是一条已发生片段事务的记录。 返回栈让用户可以通过按返回按钮撤消片段事务(后退)。

       当您将片段作为 Activity 布局的一部分添加时,Fragment存在于 Activity 视图层次结构的某个 ViewGroup 内部,并且片段会定义其自己的视图布局。您可以通过在 Activity 的布局文件中声明片段,将其作为 <fragment> 元素插入您的 Activity 布局中,或者通过将其添加到某个现有 ViewGroup,利用应用代码进行插入。不过,片段并非必须成为 Activity 布局的一部分;您还可以将没有自己 UI 的片段用作 Activity 的不可见工作线程。

       解释一下:Fragment是Activity的生命周期中的一部分或者用户界面中的一部分,这样Activity可以对Fragment实现动态的管控,当Activity处于运行状态时,Fragment可以对自己的行为和生命周期进行自主管控,但是当Activity处于pause或者stop状态时,Fragment也会处于pause或stop状态,可谓得之则生,弗得则死呀。

       安卓官方文档:https://developer.android.google.cn/guide/components/fragments

        写到这里不好意思再写了,再写还是继续抄博客和文档,还不如直接把文档给大家呢。还有像告诉大家一个事实,百度百科和所有的博客都是在抄袭安卓开发官方文档,所以还不如直接看官方文档。不仅是android学习,都要多看官方文档,解决具体问题的时候看博客等等。

      安卓官方文档:https://developer.android.google.cn/guide/components/fragments

      安卓官方文档:https://developer.android.google.cn/guide/components/fragments

 

以上是关于Fragment和Activity的主要内容,如果未能解决你的问题,请参考以下文章

Fragment从源码角度看add和replace过程

Fragment从源码角度看add和replace过程

Android Fragment使用 Activity, Fragment, WebView的状态保存和恢复

android--------实现Activity和Fragment通信的面向对象的万能接口

android fragment和activity的区别

Fragment常见问题