首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android TabHost vs Fragment:為何官方棄用 TabHost 改推 Fragment?

     編輯:程式設計疑難解答

TabHost 的優勢與侷限

  • 優勢:API 簡單、直觀、切換分頁時自動保留 Activity 狀態(首次載入後不再重建)。
  • 侷限:每個分頁對應一個完整 Activity,記憶體佔用大;API Level 11 (Android 3.0) 起標記為 deprecated,Google 不再維護更新。

Fragment 的設計優勢

  1. 輕量級:Fragment 不擁有獨立的 Context/Window,僅依附於 Activity,啟動/銷毀成本極低。
  2. 彈性佈局:支援動態新增/移除/替換、回棧管理、橫向/直向分割畫面(平板/折疊螢幕適配)。
  3. 生命週期精細控制:可配合 setUserVisibleHint、FragmentTransaction.hide/show 實現分頁切換時保留狀態、延遲載入。
  4. 現代架構支援:Jetpack Navigation、ViewPager2、ViewModel、LiveData 皆以 Fragment 為核心單元。

遷移建議

  • 舊專案若仍在用 TabHost,規劃逐步遷移至 ViewPager2 + FragmentStateAdapter。
  • 分頁內資料較大時,使用 Fragment.setMenuVisibility(false) 或 hide() 避免重複載入,配合 ViewModel 保留資料跨配置變更存活。

結語

TabHost 是早期 Android 為了降低學習門檻設計的「分頁 Activity 容器」;Fragment 則是為了解決大螢幕適配、記憶體效能、架構演進而生的「UI 組合單元」。順應官方演進方向,擁抱 Fragment 生態,才能構建可維護、高效能的現代 Android 應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved