Fragment和Activity
最近學習Fragment一頭霧水,花了很多時間,但是沒有什麽突破,對其理解似懂非懂,所以今天給自己準備了幾個問題試著解決一下。
1、Fragment的產生背景?
自從Android 3.0中引入fragments 的概念,Google翻譯為:碎片、片段。其目的是為了解決不同屏幕分辯率的動態和靈活UI設計。大屏幕如平板小屏幕如手機,平板電腦的設計使得其有更多的空間來放更多的UI組件,而多出來的空間存放UI使其會產生更多的交互,從而誕生了fragments 。
2、Fragment是什麽?
要理解Fragment是什麽,就得先知道Activity是什麽。你看到的每一個app頁面其背後都有一個Activity,Activity完成頁面的所有請求以及數據的獲取和傳輸(通過Intent),對layout中的頁面進行管理,讓我想到了Java web 開發中的Servlet。好的,那到底什麽是Activity呢?哦,不對,到底什麽是Fragment呢?
漢化後的官方文檔:
Fragment 表示 Activity 中的行為或用戶界面部分。您可以將多個片段組合在一個 Activity 中來構建多窗格 UI,以及在多個 Activity 中重復使用某個片段。您可以將片段視為 Activity 的模塊化組成部分,它具有自己的生命周期,能接收自己的輸入事件,並且您可以在 Activity 運行時添加或移除片段(有點像您可以在不同 Activity 中重復使用的“子 Activity”)。
片段必須始終嵌入在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影響。 例如,當 Activity 暫停時,其中的所有片段也會暫停;當 Activity 被銷毀時,所有片段也會被銷毀。 不過,當 Activity 正在運行(處於已恢復生命周期狀態)時,您可以獨立操縱每個片段,如添加或移除它們。 當您執行此類片段事務時,您也可以將其添加到由 Activity 管理的返回棧 — Activity 中的每個返回棧條目都是一條已發生片段事務的記錄。 返回棧讓用戶可以通過按返回按鈕撤消片段事務(後退)。
當您將片段作為 Activity 布局的一部分添加時,Fragment存在於 Activity 視圖層次結構的某個 ViewGroup 內部,並且片段會定義其自己的視圖布局。您可以通過在 Activity 的布局文件中聲明片段,將其作為 <fragment> 元素插入您的 Activity 布局中,或者通過將其添加到某個現有 ViewGroup,利用應用代碼進行插入。不過,片段並非必須成為 Activity 布局的一部分;您還可以將沒有自己 UI 的片段用作 Activity 的不可見工作線程。
解釋一下:Fragment是Activity的生命周期中的一部分或者用戶界面中的一部分,這樣Activity可以對Fragment實現動態的管控,當Activity處於運行狀態時,Fragment可以對自己的行為和生命周期進行自主管控,但是當Activity處於pause或者stop狀態時,Fragment也會處於pause或stop狀態,可謂得之則生,弗得則死呀。
安卓官方文檔:https://developer.android.google.cn/guide/components/fragments
寫到這裏不好意思再寫了,再寫還是繼續抄博客和文檔,還不如直接把文檔給大家呢。還有像告訴大家一個事實,百度百科和所有的博客都是在抄襲安卓開發官方文檔,所以還不如直接看官方文檔。不僅是android學習,都要多看官方文檔,解決具體問題的時候看博客等等。
安卓官方文檔:https://developer.android.google.cn/guide/components/fragments
安卓官方文檔:https://developer.android.google.cn/guide/components/fragments
Fragment和Activity