Данные ответа на сетевой вызов сохраняются успешно, но не отображаются во время чтения. Использование 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);
                        }
                    });

Здесь вы также должны позаботиться о ключах для хранения, которые сохраняются, только если мы предоставим имя БД, как показано в приведенном выше коде.

Другие вопросы по тегам