HomeViewModel中loadData方法获取Cache方法

来源:5-6 paging分页和数据加载3【重点】

词几许

2020-06-02

流程:Request类execute(callback)中readCache获取cache前面两次运行程序后返回null,第三次能够获取cache的值,卸载应用后重装前两次依然无法获取cache。如果是单步调试进去第一次就能够获取cache的,这是什么原因?

// Request类
 public void excute(final JsonCallback<T> callback) {
        if (mCacheStrategy != NET_ONLY) {
            ArchTaskExecutor.getIOThreadExecutor().execute(new Runnable() {
                @Override
                public void run() {
                    ApiResponse<T> response = readCache();
                    if (callback != null) {
                        callback.onCacheSuccess(response);
                    }
                }
            });
        }
        // ...
}
// Request类
private ApiResponse<T> readCache() {
        String key = TextUtils.isEmpty(cacheKey) ? generateCacheKey() : cacheKey;
        Object cache = CacheManager.getCache(key);
        Log.e("============", "readCache: " + cache);
        ApiResponse<T> result = new ApiResponse<>();
        result.status = 304;
        result.message = "缓存获取成功";
        result.body = (T) cache;
        result.success = true;
        return result;
}
// HomeViewModel类
request.excute(new JsonCallback<List<Feed>>() {
	@Override
	public void onCacheSuccess(ApiResponse<List<Feed>> response) {
		Log.e("onCacheSuccess", "onCacheSuccess: " + response.body.size());
	}
});
写回答

1回答

LovelyChubby

2020-06-02

不应该啊,课程中也是这么写的。可以对照下课程代码,应该是时序问题,实在不行把获取cache的改成同步,让她优先执行

0
0

开发商业级热门短视频App 掌握Jetpack组件库

Jetpack架构大揭秘,全组件实战主流且功能完整的短视频App

1364 学习 · 607 问题

查看课程