解析本地数据存储查询
Parse Local Datastore Query
我正在尝试在我的 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 is not null.
您的对象似乎从未被固定,因此您的本地查询总是成功返回 0 个对象,并且它继续没有再次固定任何东西。尝试类似的东西:
query.fromLocalDatastore().findInBackground()
.continueWithTask((task) -> {
ParseException error = (ParseException) task.getError();
if (error != null || task.getResult().size() == 0) {
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());
ParseException error = (ParseException) task.getError();
if (error == null) {
ParseObject.pinAllInBackground(task.getResult());
}
return task;
}, Task.UI_THREAD_EXECUTOR);
我正在尝试在我的 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 is not null.
您的对象似乎从未被固定,因此您的本地查询总是成功返回 0 个对象,并且它继续没有再次固定任何东西。尝试类似的东西:
query.fromLocalDatastore().findInBackground()
.continueWithTask((task) -> {
ParseException error = (ParseException) task.getError();
if (error != null || task.getResult().size() == 0) {
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());
ParseException error = (ParseException) task.getError();
if (error == null) {
ParseObject.pinAllInBackground(task.getResult());
}
return task;
}, Task.UI_THREAD_EXECUTOR);