android - 如果方法使用不重叠,2 个 Activity 是否应该有单独的 ViewModel?

标签 android viewmodel android-architecture-components android-viewmodel android-mvvm

我有 1 个 Activity 显示删除 Notes 来自回收 View 。 我还有另一个 Activity,它 添加更新 新项目。

目前他们都使用相同的 ViewModel 类:

public class NoteViewModel extends AndroidViewModel {
    private NoteRepository repository;
    private LiveData<List<Note>> allNotes;

    public NoteViewModel(@NonNull Application application) {
        super(application);
        repository = new NoteRepository(application);
        allNotes = repository.getAllNotes();
    }

    public void insert(Note note) {
        repository.insert(note);
    }

    public void update(Note note) {
        repository.update(note);
    }

    public void delete(Note note) {
        repository.delete(note);
    }

    public void deleteAllNotes() {
        repository.deleteAllNotes();
    }

    public LiveData<List<Note>> getAllNotes() {
        return allNotes;
    }
}

我是否应该创建 2 个单独的 ViewModels,每个 Activity 一个?

最佳答案

这取决于您是要更简单的可维护性还是更清晰的关注点分离

为两个 Activity 使用一个 ViewModel 并没有错,但考虑到 ViewModel 应该建模 View
在 ViewModel 中拥有 Activity A 未使用的某些功能,以及 Activity B 未使用的其他功能,并不真正符合ViewModel 应该是 View 功能的模型.

我的建议是两个单独的 ViewModel。

关于android - 如果方法使用不重叠,2 个 Activity 是否应该有单独的 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566536/

相关文章:

Android 架构组件 LiveData

android - 尝试添加深度链接我的 Android 应用程序

尝试创建依赖项导致的 Android Studio 编译错误

android - FCM 主题是否适合更多用户?

android - 如何更新 ImageView 中的位图

WPF 列表和 ObservableCollections

asp.net-mvc - 配置文件对象 + View 模型 + 更新用户配置文件 MVC C#

c# - 如何避免列表重复

android - 将 getActivity 作为 LifecycleOwner 传递给 fragment 中 LiveData 的观察方法的原因是什么?

Xamarin.Android 架构组件 : Not getting callbacks for lifecycle events