Данные ответа на сетевой вызов сохраняются успешно, но не отображаются во время чтения. Использование SnappyDb для хранения данных.
Я делаю сетевой звонок через залп. При успешном ответе я пытаюсь сохранить данные через SnappyDb, который показывает, что они успешно сохранены. Но при чтении никаких данных нет. Но если у меня есть данные вне ответа, тогда они тоже сохраняются и читаются. Ниже мой код. Я борюсь в этом за последние 2 дня. Ваша помощь будет высоко оценена. Спасибо
private void makeApiCall(String key) {
if (Utility.isNetworkAvailable(AddCustomerActivity.this)) {
final String finalKey = key;
showProgressDailog("Adding...");
NetworkEb.apiCallAddUser(customerEb, (key != null && !key.contains(":"))? true : false, new OnJsonResponse() {
@Override
public void onSuccess(JSONObject response) {
try {
int serverId = response.getInt("id");
customerEb.setKey(serverId + "");
customerEb.setSync(true);
snappyDbUtil.saveObjectFromKey("customer", DbName.CUSTOMER.name(), customerEb);
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(String response) {
Utility.showToast("Upload failed! Try Again");
progressDialog.dismiss();
}
});
} else {
if (key == null) {
key = snappyDbUtil.getNewKey(DbName.CUSTOMER.name());
customerEb.setKey(key);
customerEb.setSync(false);
Utility.showToast("Saved locally");
}
snappyDbUtil.saveObjectFromKey(key, DbName.CUSTOMER.name(), customerEb);
}
}
1 ответ
Я нашел решение для этого. Вы должны сохранить данные в потоке пользовательского интерфейса, вызвав это
runOnUiThread(new Runnable() {
@Override
public void run() {
itemDataModel.setKey("ITEMS:" + key);
itemDataModel.setSync(true);
snappyDbUtil.saveObjectFromKey(itemDataModel.getKey(), DbName.ITEMS.name(), itemDataModel);
}
});
Здесь вы также должны позаботиться о ключах для хранения, которые сохраняются, только если мы предоставим имя БД, как показано в приведенном выше коде.