NetworkBoundResource 中fetchFromNetwork方法实现逻辑是不是有问题
wrrgit opened this issue · comments
`threadManager.runOnWorkThread(() -> {
// 保存网络请求结果至数据库
try {
saveCallResult(processResponse(response));
} catch (Exception e) {
SLog.e(LogTag.DB, "saveCallResult failed:" + e.toString());
}
threadManager.runOnUIThread(() ->
// 重新从数据库中获取结果,防止从旧数据源中获取到加载网络前的数据
result.addSource(safeLoadFromDb(),
newData -> setValue(Resource.success(newData)))
);
});`
runOnWorkThread 方法和runOnUIThread方法是同时进行的,怎么保证在主线程中查数据库的时候,子线程已经把网络请求结果都写到数据库里了?是不是换成下面的实现比较好,将runOnUIThread放到runOnWorkThread内部
`threadManager.runOnWorkThread(() -> {
// 保存网络请求结果至数据库
try {
saveCallResult(processResponse(response));
threadManager.runOnUIThread(() ->
// 重新从数据库中获取结果,防止从旧数据源中获取到加载网络前的数据
result.addSource(safeLoadFromDb(),
newData -> setValue(Resource.success(newData)))
);
} catch (Exception e) {
SLog.e(LogTag.DB, "saveCallResult failed:" + e.toString());
}
});`
没看懂 这个放到try外面和里面有啥区别
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。