MVVM(Model-View-ViewModel)是一种软件架构设计模式,主要用于分离用户界面(UI)逻辑、呈现逻辑和业务逻辑。在Android开发中,MVVM模式通常与数据绑定(Data Binding)、LiveData和ViewModel等技术结合使用,以提高代码的可维护性和可测试性。
单活动架构(Single Activity Architecture):在这种架构中,整个应用程序只有一个主活动(Activity),所有的功能都通过这个活动来管理和展示。其他的功能模块通过片段(Fragment)来实现,这样可以减少活动的复杂性,提高代码的复用性。
问题1:片段切换时数据丢失
原因:当片段被销毁并重新创建时,其内部的状态可能会丢失。
解决方法:
ViewModel
来保存片段的状态数据,因为ViewModel的生命周期比片段更长,不会在片段销毁时丢失数据。setRetainInstance(true)
方法保留片段实例,但这只适用于配置更改(如屏幕旋转),不适用于进程销毁。示例代码:
class MyViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
class MyFragment : Fragment() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this, Observer {
// 更新UI
})
}
}
问题2:数据绑定不生效
原因:可能是数据绑定配置不正确,或者绑定的数据源没有正确更新。
解决方法:
示例代码:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="viewModel" type="com.example.MyViewModel"/>
</data>
<TextView
android:text="@{viewModel.data}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</layout>
领取专属 10元无门槛券
手把手带您无忧上云