第四章 碎片的生命周期
来源:互联网 发布:微店网络似乎存在问题 编辑:程序博客网 时间:2024/06/04 20:01
一、碎片的状态
每个碎片在其生命周期内都可能经历运行、暂停、停止和销毁这几种状态,只不过在一些细小的地方会有部分区别
1、运行状态
当一个碎片是可见的,并且它所关联的活动正处于运行状态是,该碎片也也处于运行状态
2、暂停状态
当一个活动进入到暂停状态时(由于另一个未占满屏幕的活动呗添加到了栈顶),与它相关的可见碎片就会进入到暂停状态。
3、停止状态
当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态,或者通过调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但如果commit()前调用addToBackStack()方法,这时碎片也会进入到停止状态。进入停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收
4、销毁状态
碎片总是依附于活动而存在的,因此活动被销毁时,与它相关联的碎片就会进入到销毁状态。调用FragmentTransaction中的remove()、replace()方法将碎片从活动中移除,当在commit()前没有调用AddToBackStack()此时碎片也进入到销毁状态。
二、碎片的回调
onAttach().当碎片和活动建立关联的时候调用
onCreateView().为碎片创建视图(加载布局)时调用
onActivityCreated().确保与碎片相关联的活动已创建完毕时调用
onDestroyView().当与碎片相关联的视图被移除的时候调用
onDetach(). 当碎片和活动解除关联的时候调用
碎片的生命周期图:
三、通过范例体验碎片生命周期
范例仍是在FragmentTest项目的基础上改动的(代码参照 第四章 探究碎片)
package com.example.kim.fragmenttest;import android.content.Context;import android.os.Bundle;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;/** * Created by KIM on 2017/5/2. */public class RightFragment extends Fragment { public static final String TAG = "RightFragment"; //碎片和活动建立关联时调用 public void onAttach(Context context){ super.onAttach(context); Log.d(TAG, "onAttach: "); } //活动创建前进行初始化工作 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Log.d(TAG, "onCreate: "); } //为碎片加载布局 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ Log.d(TAG, "onCreateView: "); View view=inflater.inflate(R.layout.right_fragment,container,false); return view; } //与碎片相关联的活动创建完毕 public void onActivityCreated(Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState); Log.d(TAG, "onActivityCreated: "); } //activity界面被显示出来,用户可以看到部分activity但不能与它交互 public void onStart(){ super.onStart(); Log.d(TAG, "onStart: "); } //activity被显示完全,用户可以获得activity的焦点,并能与它交互 public void onResume(){ super.onResume(); Log.d(TAG, "onResume: "); } //活动可见,但被遮挡,不可进行操作 public void onPause(){ super.onPause(); Log.d(TAG, "onPause: "); } //活动不可见,此时活动有可能被系统销毁回收回收 public void onStop(){ super.onStop(); Log.d(TAG, "onStop: "); } //与碎片相关联的视图被移除,若在这之前调用了AddToBackStack()方法 //则从返回栈返回到上一个碎片时会重新调用onCreateView()方法 public void onDestroyView(){ super.onDestroyView(); Log.d(TAG, "onDestroyView: "); } //活动销毁 public void onDestroy(){ super.onDestroy(); Log.d(TAG, "onDestroy: "); } //碎片和活动解除关联 public void onDetach(){ super.onDetach(); Log.d(TAG, "onDetach: "); }}
运行程序
⑴当RightFragment第一次被加载到屏幕上
⑵当按了Button时,AnotherRightFragment替换了RightFragment
但若在替换的时候没有调用addToBackStack()方法,此时的RightFragment就会进入销毁状态,onDestroy()和onDetach()方法就会得到执行
⑶按下back键
⑷退出程序
- 第四章 碎片的生命周期
- Fragments碎片的生命周期
- 碎片(Fragment)的生命周期
- 碎片的生命周期
- 碎片的生命周期
- Fragment碎片的生命周期
- 碎片的生命周期
- android:碎片的生命周期
- 碎片的生命周期
- Fragment碎片的生命周期
- Android---碎片的生命周期
- 碎片的生命周期
- Fragment(碎片)(2)-的生命周期
- 【Android】21、碎片的生命周期
- 第四章 探究碎片、动态加载碎片与限定符
- Android学习之碎片的生命周期
- 【Android】55、体验碎片的生命周期
- 14读书笔记之碎片的生命周期:
- vim代码自动对齐
- 线性同余算法 (LCG)
- 确定性素性测试思想之Eratosthenes筛选法
- adfasfasfsaRKEKmnMRxUZKpxTgBEIqpNytOCOmhwUEZxkSsZgBuvkWqZtPYYoAsfwradfasfasfsaKVQCFFYRMMSAZKSVGAUNKD
- adfasfasfsaMmQZmINbkaRCnFngxbsGGXSgMpbRrMgQmMfLzwPHbdOTPVvoIDZFsfwradfasfasfsaZXTUGSGYQXRLWAINNNQAGS
- 第四章 碎片的生命周期
- 1_算法_八皇后问题
- API接口JWT方式的Token认证(下),客户端(Android)的实现
- NFC
- 插入排序(Insertion sort)
- JSON 解析--JObject
- 个人原创
- bitbucket 上传仓库问题记录。
- LintCode高级数据结构/Trie/并查集/搜索题总结