将本地数据同步到实时

时间:2018-12-12 07:21:02

标签: android

目标:启用WI-FI后,应用程序应可在本地和实时数据库中运行或自动同步

我有3个文本字段:姓名,父亲姓名,母亲姓名

  1. 我想在不使用WIFI的情况下将这些文本字段数据保存到本地数据库中
  2. 第1步:连接互联网后,它们应自动上传到云数据库。

我该如何使用android实现这一目标?

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您想使用简单的方法,可以使用firebase realtime database。这样可以确保数据在联机和脱机状态下均得以持久和管理。

还有其他选择。您始终可以自己将数据库保存在本地,然后在脱机和联机时手动与服务器同步。但是,比起使用诸如Firebase或其他服务之类的服务,这要麻烦得多。

答案 1 :(得分:0)

您可以使用WorkManager来实现自己的目标。

您的问题的解决方案: 扩展Worker类并实现doWork()

public class SyncWorker extends Worker {
    //...
    public WorkerResult doWork() {
        String name = getInputData().getString("name", null);
        String fatherName = getInputData().getString("father_name", null);
        String motherName = getInputData().getString("mother_name", null);
        //Post data to your server.
        return WorkerResult.SUCCESS;
    }
}

像这样将这个工作程序添加到WorkManager

Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType
        .CONNECTED).build();
Data inputData = new Data.Builder()
            .putString("name", "XXX")
            .putString("father_name", "XXX's Father")
            .putString("mother_name", "XXX's Mother")
            .build();

OneTimeWorkRequest uploadWork = new OneTimeWorkRequest.Builder(SyncWorker.class)
            .setConstraints(constraints).setInputData(inputData).build();
WorkManager.getInstance().enqueue(uploadWork);

WorkManager会保留您的输入数据,并在互联网连接可用时调用SyncWorker::doWork函数。