向服务器发送数据时如何防止数据丢失?

时间:2018-09-07 10:35:49

标签: android networking android-volley android-broadcastreceiver

我正在开发一个Android应用程序,该应用程序用于为问题列表提供反馈。回答完所有问题后,我单击“提交”按钮以将数据发送到服务器。为了避免由于连接而导致数据丢失,我已经实现了广播接收器。在下方,应用程序会在连接可用时开始发送代码,否则会将其存储在本地数据库中。但是,如果提交时连接断开

这是我的onClick()提交按钮方法

的实现
    if (isConnectionAvailable(this)) {
        for (int i = 0; i < answereFinalList.size(); i++){
            count = i;
            Answere answere = answereFinalList . get (i);
            saveData(answere, answereFinalList);
            if (i == answereFinalList.size() - 1) {
                progressDialog.dismiss();
            }
        }
    } else {
        DbManager.getInstance(this).addAnsweres(answereFinalList);
        mainRL.setVisibility(View.GONE);
        submitRL.setVisibility(View.VISIBLE);
        submitRipple.setVisibility(View.GONE);
        progressDialog.dismiss();
    }

1 个答案:

答案 0 :(得分:0)

我假设当您说要发送回数据时,是通过API发送数据吗?如果是这样,您将从服务器返回成功或失败响应,通知您是否已接收到数据。我的建议是在您的数据上有一个同步标志。

在有意义的情况下在您的应用程序中启动服务,可能在登录时,单击提交按钮时以及在互联网连接更改时,这取决于您要发送数据的频率。让该服务在数据库中查询设置了错误设置以进行同步的数据,如果您收到200更新,表示该数据可以同步,则调用API,或者从本地删除该服务。如果您发现任何错误,例如IE服务器已关闭,连接断开等...请不要更新该标志,并让服务在x时间后重试。或者当互联网连接恢复时,等等...

https://developer.android.com/guide/components/services