Activity与Fragment的生命周期测试

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                tools:context=".MainActivity">

    <fragment
        android:name="com.cstar.androidstudy.FragPageOne"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        tools:layout="@layout/frag_page_1"/>

    <fragment
        android:name="com.cstar.androidstudy.FragPageTwo"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        tools:layout="@layout/frag_page_2" />
</LinearLayout>

一个Activity中放入2个Fragment,然后测试Activity和2个Fragment的生命周期

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onCreate

1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onAttach!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onCreate!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onCreateView!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onViewCreated!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onAttach
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onCreate!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onCreateView!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onViewCreated!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onStart!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onActivityCreated!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onActivityCreated!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onStart!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onStart!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onResume!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onResume!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onResume!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onPause!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onPause!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onPause!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onStop!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onStop!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onStop!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onRestart!
1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onStart!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onStart!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onStart!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onResume!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onResume!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onResume!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onPause!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onPause!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onPause!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onStop!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onStop!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onStop!

1169-1169/com.cstar.androidstudy D/fragment﹕ MainActivity.onDestroy!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onDestroyView!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onDestroy!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentOne.onDetach!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onDestroyView!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onDestroy!
1169-1169/com.cstar.androidstudy D/fragment﹕ FragmentTwo.onDetach!

注解:

1、主Activity onCreate后才开始依次初始化每个Fragment,每个Fragment先onAttach,然后onCreate,onCreateView,onViewCreated,这里值得注意的是,与Activity不同,Fragment的onCreate中,并没有创建、呈现子组件,所以在onCreate中,是无法访问子组件的。在onCreateView运行完成后,Fragment中才创建添加了子组件。所以至少要再onViewCreated中,才能用 fragment.getView().findViewById(R.id.xxx)获取子组件的引用。

2、主Activity中所有Fragment依次执行完onViewCreated之后,Activity才onStart开始显示界面。这时每个Fragment会调用onActivityCreated,仅仅在Activity初次onStart时,每个Fragment才会调用onActivityCreated,Activity以后再次调用onStart,Fragment不会再调用onActivityCreated(根据onActivityCreated的名称,这是可想而知的)。如果某个Fragment中的组件想访问其他Fragment中组件的数据,那么必须等到该Fragment调用onActivityCreated时,才能保证其他所有Fragment都已创建了子组件,在onActivityCreated之前,很可能会因为别的Fragment还没有初始化创建子组件而导致findViewById返回null。每个Fragment执行onActivityCreated后,会执行onStart。

3、主Activity分别执行onResume,onPause,onStop之后,每个Fragment也会跟着Activity之后依次执行同名的方法,即Activity.onResume——>Fragment1.onResume——>Fragment2.onResume……。但Fragment没有onRestart方法,主Activity重新回到栈顶显示界面,执行onRestart,onStart,每个Fragment依次执行onStart(没有onRestart)

4、主Activity退出时,Activity和每个Fragment依次执行onPause,onStop。最后主Activity调用onDestroy。每个Fragment依次调用onDestroyView,onDestroy,onDetach,注意Fragment最后的回调方法是onDetach而不是onDestroy

时间: 2024-10-04 15:53:17

Activity与Fragment的生命周期测试的相关文章

Activity和Fragment的生命周期

Activity和Fragment的生命周期

Activity与Fragment的生命周期

一.Activity 生命周期 二.Fragment 生命周期 三.对比图 四.测试代码 package com.goso.testapp; import android.app.Activity; import android.app.ListFragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; impo

Fragment的生命周期&amp;同一Activity下不同Fragment之间的通信

Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方式来瞧一瞧Fragment的生命周期是什么样的: 1 publicclass Fragment1 extends Fragment { 2 publicstaticfinal String TAG = "Fragment1"; 3 @Override 4 public View onCre

Fragment的总结:Fragment的生命周期及与Activity生命周期的对比

1.Fragment的生命周期: 先看Google帮助文档中给出的图示: //附加Fragment到当前Activity上. public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); } public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method st

Fragment的生命周期

Fragment的生命周期有11个,比Activity的生命周期会复杂不少,而且Fragment的生命周期同Activity的生命周期的穿插的执行的,看图: 其中背景为蓝色的为Activity的生命周期,其他的为Fragment周期,由图可以看出,在Fragment初始化完成前,相同的生命周期都是Activity先执行的,而进入销毁的周期时,就变成了Fragment的先执行. 1.  public void onAttach(Activity activity)方法 执行完该方法,Fragmen

Fragment 整个生命周期演示

Fragment生命周期主要体现在以下表中13个方法里,以下是按照Fragment从开始到销毁的先后执行顺序排序. 序号 方法名称 描述 1 public void onInflate(Activity activity, AttributeSet attrs,BundlesavedInstanceState) 在Activity.onCreate方法之前调用,可以获取除了View之外的资源 2 public void onAttach(Activity activity) 当fragment第

【Android】11.4 Fragment及其生命周期

分类:C#.Android.VS2015: 创建日期:2016-02-22 一.简介 Android从3.0开始引入了fragment的概念,主要是为了支持在大屏幕上实现更为动态和灵活的UI设计,比如平板电脑等.由于平板电脑的屏幕要比手机屏幕大许多,这样就有更多的空间去组合和交换UI组件. 也许这样比喻你能更快地理解它:和WPF相比,如果将Activity的作用看作类似于WPF的Window或者Page:那么Fragments的作用就类似于WPF在Window或者Page中包含的一个或多个Fra

友盟页面统计 - 关于Viewpager中的Fragment的生命周期

Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的.在此不表: Fragment从出现到广泛运用也有一段时间了.其标准生命周期也仅比Activity多出一些流程,如onCreateView(); Activity和Fragment在实际编码中必然是结合出现的,表现为Activity作为容器,装载有一个或若干个Fragment: 装载多个Fragment时,常常使用TabHost和Viewpager作为载体: 在实际编码中发现,Activity和

详解fragment(一):从源代码看fragment的生命周期

前面讲了那么多xml,我们缓一下,现在讲从代码角度来看fragment的创建. 我们通常会在FragmentActivity中通过如下方法: getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment, tag).commit(); getSupportFragmentManager().beginTransaction().add(R.id.content, fragment, tag).commi