如何避免asynctask和WorkManager提取数据库的相同记录

时间:2018-07-25 10:28:56

标签: android android-asynctask android-workmanager

我有两种方法在本地数据库和服务器之间进行同步。

  1. AsyncTask
  2. WorkManager

这是同步化的流程:

AsyncTask / WorkManager从本地数据库获取数据以上传到服务器-> if (response.status == "success")然后删除数据

但是问题在于,AsyncTaskWorkManager几乎可以同时运行,并且相互获取完全相同的数据,从而导致服务器中的数据翻倍。

我需要同时使用两者,因为WorkManager属于越野车,无法信任,我也不能真正依靠Asynctask

有什么办法可以避免这种双重数据?

1 个答案:

答案 0 :(得分:0)

您应该仅尝试通过一种机制来完成一项任务-否则,您将始终遇到并发问题。

关于`Workmanager的越野车是什么?也许您设置不正确。 Google IO in Workmanager的演讲很好, 如果您确实遇到错误,请提出问题。

此外,不再需要使用AsyncTask,请尝试完全避免使用它,因为它确实很容易出错。对于异步工作,还有很多更好的东西(workmanager,coroutinen,rxjava等)