Android零基础入门第86节:探究Fragment生命周期

本文详细介绍了Fragment的状态和生命周期,包括运行、暂停、停止和销毁四个状态,与Activity的生命周期对比,并通过示例验证了Fragment的生命周期方法调用顺序。在Android应用中,Fragment可以嵌套在Activity中,其生命周期受到Activity的影响,常见的生命周期方法如onAttach(), onCreate(), onCreateView(), onActivityCreated(), onStart(), onResume(), onPause(), onStop(), onDestroyView(), onDestroy() 和 onDetach()。通过本文的学习,读者将能够更好地理解和掌握Fragment的使用。" 109406421,8370985,OAuth2.0授权服务器配置入门,"['OAuth2.0', '授权服务器', '安全配置']
摘要由CSDN通过智能技术生成

   一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。

一、Fragment状态

    与Activity类似的是,Fragment也存在如下4种状态:

  • 运行状态:当前Fmgment位于前台,用户可见,可以获得焦点。

  • 暂停状态:其他Activity位于前台,该Fragment依然可见,只是不能获得焦点。

  • 停止状态:该Fragment不可见,失去焦点。

  • 销毁状态:该Fragment被完全删除,或该Fragment所在的Activity被结束。

    结合之前学习Activity的状态,理解Fragment的状态非常简单。

    很多地方都在说明 Fragment有三个状态,包括官方文档没有提到Fragment的 销毁状态。这也是合理的,因为处于销毁状态的Fragment基本不可用了,只能等着被回收。

二、Fragment生命周期

    Fragment的生命周期与Activity的生命周期十分相似,如下图所示:

    从上图可以看出,Activity中的生命周期方法,Fragment中基本都有,但是Fragment比Activity多几个方法。各生命周期方法的含义如下:

  • onAttach():当该Fragment被添加到Activity时被回调。该方法只会被调用一次。

  • onCreate(Bundle savedStatus):创建Fragment时被回调。该方法只会被调用一次。

  • onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View 组件。

  • onActivityCreated():当 Fragment 所在的Activity被启动完成后回调该方法。

  • onStart():启动 Fragment 时被回调。

  • onResume():恢复 Fragment 时被回调,在onStart()方法后一定会回调 onResume()方法。

  • onPause():暂停 Fragment 时被回调。

  • onStop():停止 Fragment 时被回调。

  • onDestroyView():销毁该 Fragment 所包含的View组件时调用。

  • onDestroy():销毁 Fragment 时被回调。 该方法只会被调用一次。

  • onDetach():将该 Fragment 从Activity中删除、替换完成时回调该方法,在onDestroy()方法后一定会回调 onDetach()方法。该方法只会被调用一次。

    正如开发Activity时可以根据需要有选择性地覆盖指定方法一样,开发Fragment时也可根据需要有选择性地覆盖指定方法。其中最常见的就是覆盖onCreateView()方法——该方法返回的View将由Fragment显示出来。

三、示例验证

    为了掌握Fragment生命周期,接下来通过案例 “Fragment生命周期”来学习。本案例实现了一个Activity加载了一个Fragment,具体步骤如下:

    首先创建一个布局文件fragment_lifecycle.xml,在其中简单添加一个文本框,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Fragment生命周期"
        android:textColor="#1418e6"
        android:textSize="18sp"/>

</LinearLayout>

    新建一个LifeCycleFragment类,继承Fragment基类,并重写其全部生命周期方法,并在每一个生命周期方法里面将对应的方法名输出到Logcat,代码如下:

package com.jinyu.cqkxzsxy.android.fragmentlifecycle;

import android.app.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值