Как предотвратить потерю данных при отправке данных на сервер? - PullRequest
0 голосов
/ 07 сентября 2018

Я занимаюсь разработкой приложения для 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 голосов
/ 07 сентября 2018

Я предполагаю, когда вы говорите, что отправляете данные обратно, вы отправляете их через API? В этом случае вы получите ответ об ошибке или об ошибке с сервера, который сообщит вам, были ли получены ваши данные или нет. Я рекомендую установить флажок синхронизации для ваших данных.

Запускайте службу в своем приложении, когда это имеет смысл, возможно, при входе в систему, при нажатии кнопки отправки и, возможно, при изменении интернет-соединения в зависимости от того, как часто вы хотите отправлять данные. Попросите эту службу запросить в базе данных данные с ложным набором для синхронизации, вызовите API, если вы получите 200 обновлений, которые верны для синхронизированных данных, или удалите их из локального источника. Если вы получаете какие-либо сообщения об ошибках, то сервер IE не работает, соединение разорвано и т. Д. ... не обновляйте флаг и попросите службу повторить попытку через x раз. Или когда интернет-соединение восстановлено и т.д ...

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

...