【问题标题】:On Network call response data stores successfully but not present while reading. Using SnappyDb for storing the data.On Network 呼叫响应数据存储成功,但在读取时不存在。使用 SnappyDb 存储数据。
【发布时间】:2016-03-02 05:54:50
【问题描述】:

我正在通过 volley 进行网络呼叫。在响应成功时,我试图通过 SnappyDb 存储数据,这表明它已成功存储。但是在读取任何数据时都不存在。但是,如果我有响应之外的数据,它也会保存和读取。下面是我的代码。从过去的两天开始,我一直在为此苦苦挣扎。您的帮助将不胜感激。谢谢

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);
    }
}

【问题讨论】:

    标签: android database android-volley snappydb


    【解决方案1】:

    我找到了解决方案。您需要通过调用此方法将数据保存在 UI 线程中

    runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                itemDataModel.setKey("ITEMS:" + key);
                                itemDataModel.setSync(true);
                                snappyDbUtil.saveObjectFromKey(itemDataModel.getKey(), DbName.ITEMS.name(), itemDataModel);
                            }
                        });
    

    在这里,您还必须注意要存储的密钥,只有在我们提供如上面代码所示的数据库名称时才能保存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多