Android开发体系--Activity和Fragment的生命周期

时间:2023-02-13 09:03:41

一、Activity的生命周期:

     onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()、onDestroy();

二、Fragment的生命周期:

     onAttach()、onCreate()、onCreateView()、onViewCreated()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestroyView()、onDestroy()、onDetach()

Activity生命周期的经典图^ ^

Android开发体系--Activity和Fragment的生命周期


public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("Simon", "activity -- onCreate");// 当第一次调用一个Activity就会执行onCreate方法

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.replace(R.id.fl_container, new MyFragment());
        ft.commit();

    }

    @Override
    protected void onStart() {
        // 当Activity处于可见状态的时候就会调用onStart方法
        Log.i("Simon", "activity -- onStart");
        super.onStart();
    }

    @Override
    protected void onResume() {
        // 当Activity可以得到用户焦点的时候就会调用onResume方法
        Log.i("Simon", "activity -- onResume");
        super.onResume();
    }

    @Override
    protected void onPause() {
        // 当Activity被遮挡住的时候就会调用onPause方法
        Log.i("Simon", "activity -- onPause");
        super.onPause();
    }

    @Override
    protected void onRestart() {
        // 当Activity又重新可见的时候就会调用onRestart方法
        Log.i("Simon", "activity -- onRestart");
        super.onRestart();
    }

    @Override
    protected void onStop() {
        // 当Activity处于不可见状态的时候就会调用onStop方法
        Log.i("Simon", "activity -- onStop");
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        // 当Activity被销毁时会调用onDestory方法
        Log.i("Simon", "activity -- onDestroy");
        super.onDestroy();
    }
}


Fragment生命周期的经典图^ ^

Android开发体系--Activity和Fragment的生命周期


public class MyFragment extends Fragment {

    @Override
    public void onAttach(Activity activity) {
        // 将fragment关联到activity
        Log.i("Simon", "fragment -- onAttach");
        super.onAttach(activity);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // 系统创建fragment的时候会调用onCreate
        Log.i("Simon", "fragment -- onCreate");
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // 系统创建fragment view的时候会调用onCreateView
        Log.i("Simon", "fragment -- onCreateView");
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        // 系统创建fragment view结束的时候会调用onViewCreated
        Log.i("Simon", "fragment -- onViewCreated");
        super.onViewCreated(view, savedInstanceState);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // 当Activity中的onCreate方法执行完后调用 所以不能再onCreateView()中进行
        // 与activity有交互的UI操作,UI交互操作可以在onActivityCreated()里面进行。
        Log.i("Simon", "fragment -- onActivityCreated");
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onStart() {
        // 当fragment处于可见状态的时候就会调用onStart方法
        Log.i("Simon", "fragment -- onStart");
        super.onStart();
    }

    @Override
    public void onResume() {
        // 当fragment可以得到用户焦点的时候就会调用onResume方法
        Log.i("Simon", "fragment -- onResume");
        super.onResume();
    }

    @Override
    public void onPause() {
        // 当fragment被遮挡住的时候就会调用onPause方法
        Log.i("Simon", "fragment -- onPause");
        super.onPause();
    }

    @Override
    public void onStop() {
        // 当fragment处于不可见状态的时候就会调用onStop方法
        Log.i("Simon", "fragment -- onStop");
        super.onStop();
    }

    @Override
    public void onDestroyView() {
        // 当fragment中的布局被移除时调用
        Log.i("Simon", "fragment -- onDestroyView");
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        // 销毁fragment对象
        Log.i("Simon", "fragment -- onDestroy");
        super.onDestroy();
    }

    @Override
    public void onDetach() {
        // Fragment和Activity解除关联
        Log.i("Simon", "fragment -- onDetach");
        super.onDetach();
    }
}


最后看下ActivityFragment在运行和按HOME键再恢复并退出的生命周期

完整版:

Android开发体系--Activity和Fragment的生命周期

启动:

Android开发体系--Activity和Fragment的生命周期
HOME键:
Android开发体系--Activity和Fragment的生命周期
恢复:
Android开发体系--Activity和Fragment的生命周期
退出:
Android开发体系--Activity和Fragment的生命周期