技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
30
0
自我挑戰組
一天學一篇 Google Codelabs
系列 第
30
篇
112/30 - 架構與狀態 - 狀態容器與狀態產生方式
15th鐵人賽
android
compose
AndyAWD
2023-10-15 03:06:46
402 瀏覽
分享至
今天學什麼?
今天閱讀「
適用於 Android 開發人員的 Jetpack Compose
」第三章「
架構與狀態
」的「
狀態容器與狀態產生方式
」
學習筆記
Android 開發關係團隊推薦的應用程式架構
UI elements
UI 層
在螢幕上顯示資訊
State holders
UI 層
狀態持有者
保存狀態並且向 UI 公開狀態
Domain layer (optional)
領域層
簡化 UI 層中可能存在的業務邏輯
Data layer
資料層
包含大部份的業務邏輯
邏輯分為兩種,但都應該由螢幕層級狀態持有者來管理
UI 邏輯
手機方向變動時更新畫面
業務邏輯
手機方向變動時不更新資料
推薦使用 ViewModel
壽命比畫面還要久,可以用來保存畫面狀態
和 Jetpack 完美相容
如何妥善的使用 ViewModel
在螢幕層級使用
不應該瞭解 UI 的實作細節,要通用
不要保存生命週期相關的 API 引用
不要傳遞,使用框架來管理
建立不同的狀態持有者來管理各個 UI
留言
追蹤
檢舉
上一篇
112/29 - 架構與狀態 - Navigation 最佳做法、Navigation
系列文
一天學一篇 Google Codelabs
共
30
篇
目錄
RSS系列文
訂閱系列文
11
人訂閱
26
112/26 - 架構與狀態 - 建構 Compose UI
27
112/27 - 架構與狀態 - Compose 狀態思維
28
112/28 - 架構與狀態 - 提升狀態的位置、進階狀態和連帶效果
29
112/29 - 架構與狀態 - Navigation 最佳做法、Navigation
30
112/30 - 架構與狀態 - 狀態容器與狀態產生方式
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19795
篇
完賽人數
529
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
桌機三更半夜自動開機不知在幹啥?是在下載還是在上傳資料?嚇死寶寶.去查設定我沒有設定在三更半夜更新或是掃毒呀!去查紀錄亦沒有當日凌晨的瀏覽紀錄,這到底是怎麼一回事,要如何查詢?是被安裝了病毒軟體?
維護合約的合理性
如何讓Windows 11 Professional 開啟Synology DS925+網路芳鄰的速度加快?
librenms 25.4.0 重開機都要重新設定
Librenms ssl憑證檢查 通知方式-已解決
Exchange EMS掛掉導致Q信(2016)
如何找到電腦網路行為的觸發原因?
熱門回答
維護合約的合理性
桌機三更半夜自動開機不知在幹啥?是在下載還是在上傳資料?嚇死寶寶.去查設定我沒有設定在三更半夜更新或是掃毒呀!去查紀錄亦沒有當日凌晨的瀏覽紀錄,這到底是怎麼一回事,要如何查詢?是被安裝了病毒軟體?
librenms 25.4.0 重開機都要重新設定
Librenms ssl憑證檢查 通知方式-已解決
如何找到電腦網路行為的觸發原因?
熱門文章
資安入門與實務應用介紹 29:智能合約漏洞與加密貨幣詐騙案例分析
資安入門與實務應用介紹 28:APT(高階持續性威脅)攻擊解析與防範方法
C++開啟資料夾及檔案的方法
打造你的第一個 MCP Server:從概念到實作
TrueNAS:從入門到入土心得錄01
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}