返回

Fragments 的生命週期:探索依附於Activity的 Fragments

Android





**Fragments 的生命週期:探索依附於Activity的 Fragments** 

**引言** 

掌握 Android 應用程式的生命週期對於開發流暢且健全的應用程式至關重耍。在本指南中,我们将重點探討 Fragment 的生命週期,特別是與承載它的Activity緊密相連的部分。

**Fragments 的概述** 

Fragments 是一種可重新使用、可替換的元件,用於在不同的螢幕導向、語言和硬體組態下建構出變化多端的使用者體驗。它們允許開發者以模組化和解耦的方式組織他們的應用程式架構。

**與Activity生命週期的互動** 

與Activity類似,Fragments 也有自己的生命週期。然而,它們的生命週期與承載它們的Activity緊密相關。Fragments 的生命週期取決於它們與Activity生命週期的關聯。

**依附於Activity的Fragments** 

當 Fragment 附加到Activity時,它將體驗與Activity相應階段一致的生命週期呼叫。具體而言,Fragment的生命週期與Activity的下列階段相關:

* **onAttach():** 當Fragment與Activity建立關聯時呼叫。
* **onActivityCreated():** 在Activity的 `onCreated()` 方法呼叫後立即呼叫,且僅在 Fragment 的 `onViewCreated()` 方法呼叫前呼叫。
* **onAttachedToWindow():** 當Fragment的根檢視層(View Hierarchy)附加到Activity的檢視層(View Hierarchy)時呼叫。
* **onResume():** 當Fragment所在的Activity可見且與使用者互動時呼叫。
* **onPause():** 當Fragment所在的Activity暫停時呼叫。

**分離的Fragments** 

與依附於Activity的Fragments相反,分離的Fragments具有獨立的生命週期,並且不會隨著承載它們的Activity而被銷毀。它們通常用於後端任務或執行在Activity生命週期之外運作的服務。

**最佳實務** 

在管理Fragments的生命週期時,遵循下列最佳實務非常重耍:

* 適當地使用Fragment生命週期方法。
* 避免在Fragment的生命週期方法中執行耗時的或網路相關的操作。
* 使用 `onSaveInstanceState()``onRestoreInstanceState()` 來儲存和還原Fragment的狀態。
* 對於與Activity生命週期緊密相連的Fragments,請注意遵循Activity的生命週期呼叫順序。

**範例** 

在下麵的範例中,`MainActivity`包含依附的Fragment,稱為`MyFragment``MyFragment` 的生命週期呼叫將與`MainActivity`的生命週期呼叫一致。

```java
public class MainActivity extends FragmentActivity {
  protected void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(activity);
    // Fragments 的 onActivityCreated()生命週期方法會在此處呼叫
  }
}

與Back棧的互動

當使用back棧來管理Fragments的瀏覽堆疊時,Fragments的生命週期會變得更加複雜。請参閱Activity and Back Stacks([連結])(https://developer.android.com/develop/ui/activities/back-stack) 來進一步瞭解此主題。

進階主題

對於更進階的Fragments生命週期主題,開發者可以參閱官方的開發者文件和線上論壇。

總結

透過瞭解Fragments的生命週期如何與承載的Activity生命週期互動,開發者可以更有效地管理Fragments並打造流暢、健全的應用程式。遵循最佳實務並適當地使用生命週期方法對於確保 Fragments在各種情況下的一致且預期的行爲至關重耍。