星期一, 11月 14, 2011

Fragment (九)

Android應用程式學習筆記

Handling the Fragment Lifecycle

管理fragment的生命週期非常像在管理activity的生命週期,如activity,fragment也存在三個狀態:

Resumed:
Fragment在運行中的activity是可見的。
Paused:
其他的activity在前台且擁有焦點,但是在activity的該fragment仍是可見的(前台activity部分是透明的或沒有完全覆蓋屏幕)。
Stopped:
Fragment已不可見,一方面可能是寄主activity已經停止或是fragment已經從activity被移除,但被加到back stack中。被停止的fragment仍是活的(所有的狀態和變數資訊都由系統保存),然而,fragment不再被用戶所見且如果activity被殺掉fragment也會被殺掉。
也像activity一樣,可以利用Bundle保留fragment狀態,假如activity的進程被殺掉了而你需要在activity重新建立時恢復fragment,你可以在fragment的onSaveInstanceState()回調方法中儲存狀態並且在onCreate()方法或是onCreateView()方法中恢復狀態。

activity的生命週期與fragment的生命週期之間最大的差異在於如何儲存在各自的back stack。預設,當activity停止會被置到由系統管理的back stack,然而,fragment只在你確切地要求在fragment移除時呼叫addToBackStack()方法儲存實例時,才會置入由寄主activity管理的back stack。

除此之外,管理fragment生命週期與管理activity生命週期非常類似,所以練習管理activity生命週期也可以用在fragment上,觀察activity生命週期如何影響fragment生命週期。


沒有留言:

張貼留言