📜  Android 中的共享视图模型(1)

📅  最后修改于: 2023-12-03 14:39:09.503000             🧑  作者: Mango

Android 中的共享视图模型

在 Android 应用程序开发中,视图模型模式已被广泛应用。而共享视图模型模式又进一步提高了视图模型的效果。本文将介绍 Android 中的共享视图模型的概念、作用、实现方法以及使用时需要注意的事项。

什么是共享视图模型?

共享视图模型是指在多个 Activity 或 Fragment 中共享同一个视图模型实例(ViewModel)。这种模式一般用于需要共享数据和逻辑的情况,比如实现 类似“购物车”、“收藏夹”等功能。

共享视图模型的作用
  • 可以在 Fragment 和 Activity 之间共享数据和逻辑;
  • 可以使代码更模块化和可复用;
  • 可以避免内存泄漏。
如何实现共享视图模型?

共享视图模型的实现需要借助 Android 架构组件中的 ViewModel、ViewModelProvider、ViewModelStoreOwner 等类。

  1. 创建 SharedViewModel 类
public class SharedViewModel extends ViewModel {
    private MutableLiveData<Integer> selectedItem = new MutableLiveData<>();

    public void selectItem(int item) {
        selectedItem.setValue(item);
    }

    public MutableLiveData<Integer> getSelectedItem() {
        return selectedItem;
    }
}
  1. 在需要共享数据的 Activity 或 Fragment 中获取 ViewModel 实例
SharedViewModel model = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
  1. 在 Activity 或 Fragment 中使用 ViewModel 实例
model.selectItem(position);
  1. 在其他需要访问同一 ViewModel 的 Activity 或 Fragment 中获取同一 ViewModel 实例
SharedViewModel model = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
需要注意的事项
  • 尽量避免使用 context 作为 ViewModelStoreOwner,如果必须使用 context 作为 ViewModelStoreOwner,需要注意及时清理 ViewModel,防止内存泄漏;
  • 不要在 ViewModel 中存储大量数据;
  • ViewModel 的生命周期与 Activity 或 Fragment 不同,需要注意在合适的时机清理 ViewModel。
结语

共享视图模型模式可以提高代码的可复用性和模块化程度,同时也带来了内存管理等问题。在使用时需要注意生命周期的维护和清理 ViewModel。