首先让我声明我是 Java 和 Android 连接方面的新手,所以请耐心等待。
我正在创建一个 android 应用程序,这个应用程序应该检索数据,然后将该数据存储在一个 LiveData 对象中,以便通知观察者。然而,在将实际请求功能与我的 ViewModel 分开的同时,我在实际创建让它工作时遇到了困难。当我查看 android 开发人员指南时,我看到他们使用某种类型的存储库,它只返回数据对象,没有任何形式的回调。我不太确定这将如何运作。
我目前的工作:
public class SomeViewModel extends ViewModel {
private MutableLiveData<String> data;
public SomeViewModel() {
data = new MutableLiveData();
someRequestMethod(
"https://www.google.com/",
successResponseString -> {
data.setValue(successResponseString);
},
errorResponse -> {
}
);
}
}
举例说明:
public class SomeViewModel extends ViewModel {
private MutableLiveData<String> data;
private GoogleRepository injectedGoogleRepository;
public SomeViewModel() {
data = new MutableLiveData();
data.setValue(injectedGoogleRepository.someRequestMethod());
}
}
现在我可以理解在回调内部传递 LiveData,以便存储库使用响应执行该回调。例如。像这样:
injectedGoogleRepository.someRequestMethod(successResponseString -> data.setValue(successResponseString));
在我开始研究如何在 android 中创建 web 服务和存储库之前,这是我的想象。从功能上讲,解决方案之间不应存在巨大差异,假设示例在等待响应时不阻塞线程。我是否正确地假设没有办法在不实际阻塞 ViewModel 正在运行的线程的情况下实现示例代码?由于我在这方面缺乏经验,我想知道我是否遗漏了什么。
感谢阅读。