Activity和Fragment生命周期之间的关系

第一个Activity的布局
/**
  * MainActivity布局xml文件
  */

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

    <Button
        android:id="@+id/button"
        android:text="开启第二个Activity"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></Button>

    <LinearLayout
        android:id="@+id/linearlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#339999">
    </LinearLayout>

</LinearLayout>

第二个Activity的布局

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="com.bwie.fragment.SecondActivity"
    android:orientation="vertical">
    <Button
        android:id="@+id/button_finish"
        android:text="finish"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></Button>

    <LinearLayout
        android:id="@+id/linearlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#339999">
    </LinearLayout>

</LinearLayout>


----------------------------------------------------------------------------------------------------------------------

接下来是第一个Activity中的代码

public class MainActivity extends AppCompatActivity {

    private static final String LOG_TAG ="MainActivity";
    private Button mButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.w(LOG_TAG, "==============onCreate()");

        FirstFragment firstFragment = new FirstFragment();
        android.support.v4.app.FragmentManager supportFragmentManager = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.linearlayout,firstFragment,"firstFragment");
        fragmentTransaction.commit();
        mButton = (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.w(LOG_TAG, "------------------mButton onClick-------------------");
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.w(LOG_TAG, "==============onStart()");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.w(LOG_TAG, "==============onRestart()");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.w(LOG_TAG, "==============onResume()");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.w(LOG_TAG, "==============onPause()");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.w(LOG_TAG, "==============onStop()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.w(LOG_TAG, "==============onDestroy()");
    }
}

第二个Activity里面的代码

public class SecondActivity extends AppCompatActivity {
    private static final String LOG_TAG ="SecondActivity";
    private Button mButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.w(LOG_TAG, "==============onCreate()");

        SecondFragment secondFragment = new SecondFragment();
        android.support.v4.app.FragmentManager supportFragmentManager = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.linearlayout,secondFragment,"secondFragment");
        fragmentTransaction.commit();
        mButton = (Button) findViewById(R.id.button_finish);
        mButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.w(LOG_TAG, "------------------mButton onClick-------------------");
                finish();
            }
        });
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.w(LOG_TAG, "==============onStart()");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.w(LOG_TAG, "==============onRestart()");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.w(LOG_TAG, "==============onResume()");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.w(LOG_TAG, "==============onPause()");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.w(LOG_TAG, "==============onStop()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.w(LOG_TAG, "==============onDestroy()");
    }
}
---------------------------------------------------------------------------------------

接下来是第一个Fragment里面的代码

public class FirstFragment extends Fragment {
    private static final String LOG_TAG = "FirstFragment";
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    private String mParam1;
    private String mParam2;
    public FirstFragment() {
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        Log.w(LOG_TAG, "onAttach...");
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.w(LOG_TAG, "onCreate...");
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.w(LOG_TAG, "onCreateView...");
        return inflater.inflate(R.layout.fm_item, container, false);
    }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.w(LOG_TAG, "onActivityCreated...");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.w(LOG_TAG, "onStart...");
    }


    @Override
    public void onResume() {
        super.onResume();
        Log.w(LOG_TAG, "onResume...");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.w(LOG_TAG, "onPause...");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.w(LOG_TAG, "onStop...");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.w(LOG_TAG, "onDestroyView...");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.w(LOG_TAG, "onDestroy...");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.w(LOG_TAG, "onDetach...");
    }
}
最后是第二个Fragment里面的代码

public class SecondFragment extends Fragment {
    private static final String LOG_TAG = "SecondFragment";
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    private String mParam1;
    private String mParam2;
    public SecondFragment() {
    }
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        Log.w(LOG_TAG, "onAttach...");
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.w(LOG_TAG, "onCreate...");
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.w(LOG_TAG, "onCreateView...");
        return inflater.inflate(R.layout.fm_item, container, false);
    }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.w(LOG_TAG, "onActivityCreated...");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.w(LOG_TAG, "onStart...");
    }


    @Override
    public void onResume() {
        super.onResume();
        Log.w(LOG_TAG, "onResume...");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.w(LOG_TAG, "onPause...");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.w(LOG_TAG, "onStop...");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.w(LOG_TAG, "onDestroyView...");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.w(LOG_TAG, "onDestroy...");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.w(LOG_TAG, "onDetach...");
    }
    
}
-------------------------------------------------------------------------------------------

最后是运行结果:

1、第一次打开以后:

1.com.example.kuguan.anlearning W/MainActivity﹕ ==============onCreate()
2.com.example.kuguan.anlearning W/FirstFragment﹕ onAttach...
3.com.example.kuguan.anlearning W/FirstFragment﹕ onCreate...
4.com.example.kuguan.anlearning W/FirstFragment﹕ onCreateView...
5.com.example.kuguan.anlearning W/FirstFragment﹕ onActivityCreated...
6.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStart()
7.com.example.kuguan.anlearning W/FirstFragment﹕ onStart...
8.com.example.kuguan.anlearning W/MainActivity﹕ ==============onResume()
9.com.example.kuguan.anlearning W/FirstFragment﹕ onResume...
  

2、点击MainActivity中的按钮“打开第二个Activity”以后:

1.com.example.kuguan.anlearning W/MainActivity﹕ ----------------mButton onClick-----------------
2.com.example.kuguan.anlearning W/FirstFragment﹕ onPause...
3.com.example.kuguan.anlearning W/MainActivity﹕ ==============onPause()
4.com.example.kuguan.anlearning W/SecondFragment﹕ onAttach...
5.com.example.kuguan.anlearning W/SecondFragment﹕ onCreate...
6.com.example.kuguan.anlearning W/SecondFragment﹕ onCreateView...
7.com.example.kuguan.anlearning W/SecondFragment﹕ onActivityCreated...
8.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onStart()
9.com.example.kuguan.anlearning W/SecondFragment﹕ onStart...
10.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onResume()
11.com.example.kuguan.anlearning W/SecondFragment﹕ onResume...
12.com.example.kuguan.anlearning W/FirstFragment﹕ onStop...
13.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStop()

3、点击SecondActivity的按钮“finish”之后:

1.com.example.kuguan.anlearning W/SecondActivity﹕ -----------------mButton onClick------------------
2.com.example.kuguan.anlearning W/SecondFragment﹕ onPause...
3.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onPause()
4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onRestart()
5.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStart()
6.com.example.kuguan.anlearning W/FirstFragment﹕ onStart...
7.com.example.kuguan.anlearning W/MainActivity﹕ ==============onResume()
8.com.example.kuguan.anlearning W/FirstFragment﹕ onResume...
9.com.example.kuguan.anlearning W/SecondFragment﹕ onStop...
10.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onStop()
11.com.example.kuguan.anlearning W/SecondFragment﹕ onDestroyView...
12.com.example.kuguan.anlearning W/SecondFragment﹕ onDestroy...
13.com.example.kuguan.anlearning W/SecondFragment﹕ onDetach...
14.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onDestroy()

4、点击back键使MainActivity退到后台:

1.com.example.kuguan.anlearning W/FirstFragment﹕ onPause...
2.com.example.kuguan.anlearning W/MainActivity﹕ ==============onPause()
3.com.example.kuguan.anlearning W/FirstFragment﹕ onStop...
4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStop()
5.com.example.kuguan.anlearning W/FirstFragment﹕ onDestroyView...
6.com.example.kuguan.anlearning W/FirstFragment﹕ onDestroy...
7.com.example.kuguan.anlearning W/FirstFragment﹕ onDetach...
8.com.example.kuguan.anlearning W/MainActivity﹕ ==============onDestroy()

5、在MianActivity显示的时候,按HOME键:

1.com.example.kuguan.anlearning W/FirstFragment﹕ onPause...
2.com.example.kuguan.anlearning W/MainActivity﹕ ==============onPause()
3.com.example.kuguan.anlearning W/FirstFragment﹕ onStop...
4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStop()

6、然后再点击Icon打开:

1.com.example.kuguan.anlearning W/MainActivity﹕ ==============onRestart()
2.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStart()
3.com.example.kuguan.anlearning W/FirstFragment﹕ onStart...
4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onResume()
5.com.example.kuguan.anlearning W/FirstFragment﹕ onResume...






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值