ViewModel似乎无法观察MutableLiveData

时间:2019-04-13 22:10:15

标签: android repository observable viewmodel

我有一个可以像这样设置数据的存储库:

private MutableLiveData<JSONObject> myVocab = new MutableLiveData<>();

public Repo(Context context) {
    ExecutorService service = Executors.newSingleThreadExecutor();
        service.execute(() -> {
            myVocab = jsonReader.readJSONFromAssets(context, "myVocab.json")
        });
        service.shutdown();
}

public MutableLiveData<JSONObject> getVocab() { return myVocab; }

它已经正确地读入json并将其保存到myVoc中,我已经检查过了。

我还有一个ViewModel,它监听vocab对象,然后对其进行填充:

private MediatorLiveData<JSONObject> vocab = new MediatorLiveData<>();

/* CONSTRUCTOR */
public WordsViewModel(@NonNull Application application) {
    super(application);

    wordsRepository = Repo.getInstance(application);

    vocab.addSource(_wordsRepository.getVocab(),
            jsonObject -> vocab.setValue(jsonObject));

    doStuffWithVocab();
}

但是,观察者从未被召唤(我已经在其中放置了日志以进行检查)。我现在已经用几个应用程序遇到了这个问题,除非通过黑客攻击,否则似乎无法解决。

为什么我的观察者不工作? (它可以在MainActivity中使用,而不能在ViewModel中使用。)

0 个答案:

没有答案