【Android进阶】4、用 ViewModel 和 onSaveInstanceState 实现旋转屏幕时 UI 状态的保存和恢复

本文介绍了如何在Android应用中使用ViewModel和onSaveInstanceState来保存和恢复UI状态,特别是在设备旋转时。详细讲解了ViewModel的生命周期、如何添加ViewModel以及向ViewModel添加数据。同时讨论了覆盖onSaveInstanceState函数来保存实例状态的方法,以及ViewModel与onSaveInstanceState的区别和使用场景。文章结合GeoQuiz应用实例,展示了实际操作过程。
摘要由CSDN通过智能技术生成

设备旋转导致activity销毁与新建有时也令人头疼,比如,设备旋转后,GeoQuiz 应用将回到第一道题。

为了让屏幕旋转时,保留内存中 currentIndex 的值, 需要用 ViewModel 保存UI数据,这样旋转后新建的 MainActivity 的 currentIndex 值仍为原值,保证的数据持久化。

引入 ViewModel,需在 buidle.gradle 添加如下依赖:

dependencies {
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
}

4.1 添加ViewModel

ViewModel 和某种特殊用户屏相关联, 适合存管处理屏显数据的逻辑。

ViewModel 可将所有显示在用户界面上的数据,汇集、格式化后,供其他对象读取。

ViewModel在 androidx.lifecycle 包里。

首先创建一个 QuizViewModel 类,它是 ViewModel 的子类,代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值