【发布时间】:2019-04-26 09:13:34
【问题描述】:
Firestore 在应用程序关闭(被系统杀死或被用户删除)时似乎不会执行挂起的写入操作。应用程序离线时排队的每个写入都将仅在应用程序在线并再次运行时执行。
我想在后台手动执行这些写入,所以我使用了 Work Mananger,其中包含以下代码行:
FirebaseFirestore.getInstance().enableNetwork();
完整的 sn-p:
public class FirebaseSyncWorker extends Worker {
public FirebaseSyncWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
FirebaseFirestore.getInstance().enableNetwork();
return Result.success();
}
}
此代码适用于我。它会在应用关闭时不时同步用户的数据。但是,我不确定这是否是正确的方法。
据我所知,enableNetwork() 旨在禁用网络访问后重新启用它。我的应用从不禁用它,我只是用它来执行挂起的写入操作。
这是实现我想要的好方法吗?有没有更好的方法来做到这一点?
【问题讨论】:
-
所以你基本上想在应用被系统杀死或被用户删除时做一些事情,对吧?
-
@AlexMamo 确实如此。我特别想做的事情是执行所有等待的 Firestore 任务。
-
所以为了更好地理解,您有多个
Task对象,您想等待每个对象都完成吗? -
目前没有 API 可以确定客户端 SDK 是否认为其所有待处理的写入都与服务器完全同步。不过,您可以为此提出功能请求。如果您有数据要从服务器同步,则需要对该数据进行查询并等待它完成。
-
@AlexMamo 不,我已经编辑了我的问题。我想对服务器执行所有挂起的写入操作。
标签: android firebase google-cloud-firestore