Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

NetworkBoundResource 中fetchFromNetwork方法实现逻辑是不是有问题 #56

Open
wrrgit opened this issue Sep 7, 2020 · 2 comments

Comments

@wrrgit
Copy link

wrrgit commented Sep 7, 2020

               `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());
                }
            });`
@hufu4635
Copy link

没看懂 这个放到try外面和里面有啥区别

@wrrgit
Copy link
Author

wrrgit commented Dec 25, 2021 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants