【发布时间】:2019-07-16 21:54:11
【问题描述】:
我正在尝试在我的 Android 应用程序中启用缓存结果,该应用程序使用 Back4App 的 Parse Server 作为后端。
我启用了本地数据存储,但我似乎无法从网络/缓存结果中查询。
以下代码来自我的查询
query.fromLocalDatastore().findInBackground()
.continueWithTask((task) -> {
if (task.isFaulted() && task.getError() instanceof ParseException && ((ParseException) task.getError()).getCode() == ParseException.CACHE_MISS) {
return query.fromNetwork().findInBackground();
}
Log.d("Cache", "" + task.getResult().size());
return task;
}, Task.UI_THREAD_EXECUTOR)
.continueWithTask((task) -> {
// Update UI with results ...
Log.d("Network", "" + task.getResult().size());
ParseObject.pinAllInBackground(task.getResult());
return task;
}, Task.UI_THREAD_EXECUTOR);
logcat 显示大小为 0 的缓存和网络。
我尝试了以下方法:
query.fromLocalDatastore().findInBackground()
.continueWithTask((task) -> {
// Update UI with results from Local Datastore ...
ParseException error = (ParseException) task.getError();
if (error == null) {
Log.d("Cache", "" + task.getResult().size());
}
// Now query the network:
return query.fromNetwork().findInBackground();
}, Task.UI_THREAD_EXECUTOR)
.continueWithTask((task) -> {
// Update UI with results from Network ...
ParseException error = (ParseException) task.getError();
if (error == null) {
Log.d("Network", "" + task.getResult().size());
}
return task;
}, Task.UI_THREAD_EXECUTOR);
它执行缓存,然后执行网络,它正在工作。
但是我想要Cache else Network if error 不为空。
【问题讨论】:
标签: java android parse-platform