TabHost 的優勢與侷限
- 優勢:API 簡單、直觀、切換分頁時自動保留 Activity 狀態(首次載入後不再重建)。
- 侷限:每個分頁對應一個完整 Activity,記憶體佔用大;API Level 11 (Android 3.0) 起標記為 deprecated,Google 不再維護更新。
Fragment 的設計優勢
- 輕量級:Fragment 不擁有獨立的 Context/Window,僅依附於 Activity,啟動/銷毀成本極低。
- 彈性佈局:支援動態新增/移除/替換、回棧管理、橫向/直向分割畫面(平板/折疊螢幕適配)。
- 生命週期精細控制:可配合
setUserVisibleHint、FragmentTransaction.hide/show 實現分頁切換時保留狀態、延遲載入。
- 現代架構支援:Jetpack Navigation、ViewPager2、ViewModel、LiveData 皆以 Fragment 為核心單元。
遷移建議
- 舊專案若仍在用 TabHost,規劃逐步遷移至
ViewPager2 + FragmentStateAdapter。
- 分頁內資料較大時,使用
Fragment.setMenuVisibility(false) 或 hide() 避免重複載入,配合 ViewModel 保留資料跨配置變更存活。
結語
TabHost 是早期 Android 為了降低學習門檻設計的「分頁 Activity 容器」;Fragment 則是為了解決大螢幕適配、記憶體效能、架構演進而生的「UI 組合單元」。順應官方演進方向,擁抱 Fragment 生態,才能構建可維護、高效能的現代 Android 應用。