我们可以让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();
}
});
}
答案 0 :(得分:-1)
您无法简单地离线写入数据,因为Firestore可以获取数据并在您拥有Internet连接时上传数据(这需要在后台执行任务)。 Firestore已经改进了其离线功能,但您始终可以选择创建自己的服务,以便在设备连接时上传它。
Android可让您创建服务。来自developer.android.com:
服务是在后台运行以执行的组件 长时间运行的操作或执行远程进程的工作。一个 服务不提供用户界面。例如,一项服务 当用户处于不同的状态时,可能会在后台播放音乐 应用程序,或者它可以通过网络获取数据而不会阻塞 用户与活动的互动。另一个组件,如 activity,可以启动服务并让它按顺序运行或绑定到它 与它互动。服务是作为服务的子类实现的。
因此,您可以创建一个等待Internet连接的Service
,只需调用FirebaseFirestore
对象即可上传您想要的所有数据。
这可能会对您有所帮助,这是有关服务的官方Android信息:https://developer.android.com/guide/components/services.html