1. 程式人生 > >Fragment與Activity之間生命週期的關係

Fragment與Activity之間生命週期的關係

本篇文章講Fragment生命週期和Activity生命週期的關係,如圖:

可以看到Fragment的生命週期和它所在的Activity的生命週期是相關聯的

看Demo:

public class MainActivity extends BaseActivity{

    private FrameLayout fragContainer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        fragContainer = findViewById(R.id.fragment_container);
        FragmentTest fragment = new FragmentTest();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.add(R.id.fragment_container,fragment);
        transaction.commit();
    }

    @Override
    protected int getContentView() {
        return R.layout.activity_main;
    }
}

在Activity中的FrameLayout新增一個fragment,列印他們的生命週期如下:

08-26 07:49:56.160 5905-5905/com.example.hp.playaudiotest E/MainActivity: onCreate
08-26 07:49:56.169 5905-5905/com.example.hp.playaudiotest E/Fragment: onAttach
08-26 07:49:56.170 5905-5905/com.example.hp.playaudiotest E/Fragment: onCreate
    onCreateView
08-26 07:49:56.172 5905-5905/com.example.hp.playaudiotest E/Fragment: onActivityCreated
    onStart
08-26 07:49:56.173 5905-5905/com.example.hp.playaudiotest E/MainActivity: onStart
08-26 07:49:56.176 5905-5905/com.example.hp.playaudiotest E/MainActivity: onResume
08-26 07:49:56.176 5905-5905/com.example.hp.playaudiotest E/Fragment: onResume
08-26 07:50:07.933 5905-5905/com.example.hp.playaudiotest E/MainActivity: onPause
08-26 07:50:07.934 5905-5905/com.example.hp.playaudiotest E/Fragment: onPause
08-26 07:50:08.502 5905-5905/com.example.hp.playaudiotest E/MainActivity: onStop
08-26 07:50:08.503 5905-5905/com.example.hp.playaudiotest E/Fragment: onStop
08-26 07:50:08.503 5905-5905/com.example.hp.playaudiotest E/MainActivity: onDestroy
08-26 07:50:08.503 5905-5905/com.example.hp.playaudiotest E/Fragment: onDestroyView
08-26 07:50:08.509 5905-5905/com.example.hp.playaudiotest E/Fragment: onDestroy
08-26 07:50:08.510 5905-5905/com.example.hp.playaudiotest E/Fragment: onDetach