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的改成同步,让她优先执行
00
相似问题