iT邦幫忙

0

Android 生命週期 - ViewModel

  • 分享至 

  • xImage
  •  

ViewModel lifecycle

tags: Android lifecycle ViewModel

viewModel

規則,viewModel 永遠不應知道 view, ui lifecycle

生命週期

生命週期長且簡單,當對應的 activity 被銷毀時,框架會自動觸發 onClear

保存狀態 saveStateHandler


給個情境,用戶輸入了一個字串做搜尋,拿到一個 list,如果都不做處理,當 os 砍掉應用的時候,用戶回來會看到初始畫面

而我們可以透過 room 和 saveStateHandler 去保存狀態,在 viewModel 保存字串,並視情況在 process 結束,用戶再次回到應用時,將字串在 viewModel 重新讀出,並向 Model 發出,以獲得 room 或是 api 資料

:::info
contains(String key) - 检查是否存在给定键的值。
remove(String key) - 移除给定键的值。
keys() - 返回 SavedStateHandle 中包含的所有键。
:::

class SavedStateViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
    val filteredData: LiveData<List<String>> =
        savedStateHandle.getLiveData<String>("query").switchMap { query ->
        repository.getFilteredData(query)
    }

    fun setQuery(query: String) {
        savedStateHandle["query"] = query
    }
    //or
    val filteredData: StateFlow<List<String>> =
        savedStateHandle.getStateFlow<String>("query")
            .flatMapLatest { query ->
                repository.getFilteredData(query)
            }

    fun setQuery(query: String) {
        savedStateHandle["query"] = query
    }
}


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言