返回

ViewModel拯救旋转混乱,让你数据潇洒过渡!

Android

ViewModel的魔法:旋转后的数据重建
ViewModel是Android中的一个重要工具,它可以保存重建数据,即使在屏幕旋转后也能保证数据不丢失。这是因为ViewModel与Activity和Fragment的生命周期无关,也就是说,即使Activity或Fragment被销毁,ViewModel也不会被销毁。因此,ViewModel非常适合用于保存需要跨生命周期存在的数据。

在ViewModel中,我们可以使用LiveData来保存数据。LiveData是一个可观察的数据持有者,当数据发生变化时,它会通知所有观察者。这意味着,我们可以在ViewModel中使用LiveData来保存数据,当屏幕旋转后,新的Activity或Fragment可以从ViewModel中获取数据,从而实现数据的重建。

实战演练:ViewModel拯救旋转数据

为了更好地理解ViewModel如何拯救旋转数据,我们来看一个实战案例。假设我们有一个简单的Activity,它包含一个TextView,显示一个计数器。当用户点击按钮时,计数器会递增。

class MainActivity : AppCompatActivity() {

    private var count = 0
    private val viewModel: MainViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val textView: TextView = findViewById(R.id.text_view)
        textView.text = count.toString()

        viewModel.count.observe(this, Observer {
            textView.text = it.toString()
        })

        val button: Button = findViewById(R.id.button)
        button.setOnClickListener {
            count++
            viewModel.count.value = count
        }
    }
}

在这个例子中,我们使用ViewModel来保存计数器数据。当用户点击按钮时,我们使用viewModel.count.value = count将计数器数据保存到ViewModel中。当屏幕旋转后,新的Activity会从ViewModel中获取数据,并将其显示在TextView中。这样,我们就实现了数据的重建,确保计数器数据不会丢失。

总结

ViewModel是Android中的一个强大工具,它可以保存重建数据,即使在屏幕旋转后也能保证数据不丢失。通过使用ViewModel,我们可以轻松地处理旋转屏幕带来的数据丢失问题,让我们的程序更加健壮。