Fragment與Activity之間生命週期的關係
阿新 • • 發佈:2019-01-09
本篇文章講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