Android 生命週期 - ViewModel

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    }}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章