java为什么在从ViewModel调用时,改型排队不起作用?
我构建了MVVM,并通过改造2从网络中获取数据。获取数据流如下所示:MainActivity->;视图模型->;存储库->;蜜蜂服务。因此,我从存储库中调用enqueu,如下所示:
public List<Result> getArticles() {
final List<Result>[] articles = new List[]{new ArrayList<>()};
Log.d(TAG, "getArticles");
ApiService.getService().getArticles("test", "thumbnail").enqueue(new Callback<Example>() {
@Override
public void onResponse(Call<Example> call, Response<Example> response) {
Log.d(TAG, "onResponse");
if (response.isSuccessful()) {
Log.d(TAG, "isSuccessful");
articles[0] = response.body().getResponse().getResults();
}
}
@Override
public void onFailure(Call<Example> call, Throwable t) {
Log.d(TAG, "onFailure");
}
});
return articles[0];
}
我从ViewModel中调用getArticles,如下所示:
public List<Result> getArticleList() {
Log.d(TAG, "getArticleList");
articleRepository = new ArticleRepository();
articleRepository.getArticles();
return articleList;
}
然而,我的排队不起作用,我花了几个小时来找出原因,但仍然不能。我唯一注意到的是,当我不是从ViewModel而是从MainActivity打电话时,排队起作用了!!! 谁能告诉我我在这里错过了什么?为什么同样的事情在ViewModel中不起作用?我认为存在一些线程或生命周期问题,但无法弄清楚到底是什么问题
另外,请注意,当我尝试在MainActivity中打印数据时,它不起作用:
for (Result article : articleList) {
Log.d(TAG, article.getSectionName());
}
但当我从改装排队onResponse回调打印它时,它确实起作用。这里有什么问题
# 1 楼答案
尝试更改ViewModel以返回articleRepository。getArticles()