Fragment的生命周期和其父Activity的生命周期相关联。下面介绍Fragment的各个生命周期方法的作用以及每个方法中该做那些事情
package com.example.androidtest;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* @author syz
* @date 2016-4-6
*/
public class MyFragment extends Fragment {
/**
* 调用该方法时Fragment会被关联到父Activity上 该方法的作用,可以在该方法中获取父Activity的引用
*/
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
/**
* 该方法用来进行Fragment的初始创建 初始化Fragment
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
* 一旦Fragment被创建,要创建它自己的用户界面时调用该方法 创建,或者填充Fragment的UI,并返回它
* 如果这个Fragment没有UI,那么返回null
*/
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
/**
* 一旦父Activity和Fragment的UI创建完成,则调用该方法。
* 完成Fragment的初始化工作,尤其是那些父Activity被初始化完成后或者Fragment的View被完全填充后才会做的事情
*/
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
/**
* 在可见生命周期的开始时候被调用
* 应用所有需要的UI变化,现在Fragment是可见的
*/
@Override
public void onStart() {
super.onStart();
}
/**
* 在活动的生命周期开始时调用。
* 恢复所有被暂停的Fragment需要的UI更新,线程或者进程,但是在非活动状态它是暂停的
*/
@Override
public void onResume() {
super.onResume();
}
/**
* 在活动周期结束时调用。
* e.g.
* 当Activity不是活动的前台Activity时,需要暂停UI的更新、挂起线程或者暂停那些不需要更新的CPU的
* 集中处理。由于调用这个方法后,进程可能被终止,所以需要保存所有的编辑和状态改变信息
*/
@Override
public void onPause() {
super.onPause();
}
/**
* 在活动生命周期结束时,调用该方法来保存UI的状态变化
* 将UI的状态变化信息保存到outState中。这个Bundle会被传递到
* onCreate、onCreateView和onActivityCreated(如果父Activity被终止并且重新启动)方法中
*/
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
/**
* 在可见生命周期结束时调用
* 当Fragment变为不可见时,暂停其余的UI更新、挂起线程或者暂停不再需要的处理
*/
@Override
public void onStop() {
super.onStop();
}
/**
* 当Fragment的View被分离时调用
* 在该方法中清除资源相关的view
*/
@Override
public void onDestroyView() {
super.onDestroyView();
}
/**
* 在整个生命周期结束时调用该方法
* 在该方法中清除所有资源,包括结束线程和关闭数据库连接等等
*/
@Override
public void onDestroy() {
super.onDestroy();
}
/**
* 当Fragment从它的父Activity上分离时,调用该方法
*/
@Override
public void onDetach() {
super.onDetach();
}
}
注:已创建的Fragment的生命周期存在于首次对onCreate的调用和最终对onDestroy的调用期间。因为对Activity的进程来说,在没有相应的onDestroy方法被终止是很常见的情况,所以Fragment的销毁不能依赖于触发onDestroy来完成。
与Activity一样,应使用onCreate方法来初始化Fragment。在Fragment的生命周期内创建的任何类作用于对象,最好保证它们只能被创建一次。