【问题标题】:Should 2 Activity's have separate ViewModels if the method usages don't overlap?如果方法使用不重叠,2 Activity 是否应该有单独的 ViewModel?
【发布时间】:2018-09-29 08:19:28
【问题描述】:

我有 1 个Activity 显示并从RecyclerView 删除 Notes。 我还有另一个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 一个?

【问题讨论】:

  • 请注意,在使用单个 ViewModel 类时,两个 Activity 不会共享同一个实例(因为 ViewModel 与 Activity 生命周期相关联)。这可能会导致混淆,具体取决于您的 ViewModel 的实现
  • 你也可以发图片吗?

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


【解决方案1】:

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

两个活动都使用一个 ViewModel 并没有错,但考虑到 ViewModel 应该model view
在 ViewModel 中包含 Activity A 未使用的某些功能,以及 Activity B 未使用的其他功能,与 ViewModel 应该是 View 功能的模型的想法并不相符>.

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

【讨论】:

  • 谢谢,这就是我一直在寻找的原因!
猜你喜欢
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多