【问题标题】:Firestore Offline Write/Add Not WorkingFirestore 离线写入/添加不起作用
【发布时间】:2018-04-15 19:10:55
【问题描述】:

我们能够让 Firestore 将记录下载到本地缓存并读取这些记录。但是,我们无法更新记录,也无法添加新记录。

甚至尝试了一些相同的代码 (https://github.com/firebase/quickstart-android),但似乎无法让离线写入/插入工作 - 只能读取。

当我们离线调用这个函数时,它会被调用 OnFailureListner 并抛出异常

 @Override
public void onRating(Rating rating) {
    // In a transaction, add the new rating and update the aggregate totals
    addRating(mRestaurantRef, rating)
            .addOnSuccessListener(this, new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Log.d(TAG, "Rating added");

                    // Hide keyboard and scroll to top
                    hideKeyboard();
                    mRatingsRecycler.smoothScrollToPosition(0);
                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "Add rating failed", e);

                    // Show failure message and hide keyboard
                    hideKeyboard();
                    Snackbar.make(findViewById(android.R.id.content), "Failed to add rating",
                            Snackbar.LENGTH_SHORT).show();
                }
            });
}

【问题讨论】:

    标签: android firebase google-cloud-firestore


    【解决方案1】:

    您不能简单地离线写入数据,因为 Firestore 可以在您有 Internet 连接时获取数据并上传(这需要在后台执行任务)。 Firestore 改进了其离线功能,但您始终可以选择创建自己的服务以在设备连接时上传。

    Android 允许您创建服务。来自developer.android.com

    服务是在后台运行以执行的组件 长时间运行的操作或为远程进程执行工作。一种 服务不提供用户界面。例如,一个服务 当用户在不同的地方时,可能会在后台播放音乐 应用程序,或者它可能会通过网络获取数据而不会阻塞 用户与活动的交互。另一个组件,例如 活动,可以启动服务并让它按顺序运行或绑定到它 与它互动。服务被实现为服务的子类。

    因此您可以创建一个Service,它会一直等待互联网连接,然后调用FirebaseFirestore 对象来上传您想要的所有数据。

    这可能会对你有所帮助,这是关于服务的官方 Android 信息:https://developer.android.com/guide/components/services.html

    【讨论】:

    • 谢谢。我认为这与使用离线不支持的事务有关。进行批量更新似乎有效。什么是正确/推荐的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多