同步数据多个AsyncTask以完成

时间:2016-04-11 17:54:06

标签: java android android-asynctask

我有两个asynctasks。调用一个asynctask,另一个在第一个的onPostExecute中调用。当用户单击按钮时,会发生这些任务。问题是当用户快速点击按钮并且还没有等待第二个异步任务完成时,任务一启动。

任务1 - >插入一列,onPostExecute启动任务2 - >增加列以插入

当用户点击太快时最终发生的是它运行 任务1 - >任务1 - >任务2 - >任务2 这导致在列甚至递增之前将列插入映射到同一列(任务2)。

我该如何解决这个问题?在某种程度上,我希望它是实时的,它应该与多个用户一起工作。 我有两个不同的SQL查询,一个用于更新列中的值,另一个用于更新当前列,因此下一个插入位于下一列中。我用MYSQL。

感谢。

1 个答案:

答案 0 :(得分:0)

听起来你应该在这里使用交易。请参阅:Using Transactions

如果您不想使用交易,另一种选择是使用信号量做生产者/消费者。使用1个令牌初始化信号量。任务1首先获得一个信号量。在任务2结束时,任务2将释放信号量。因此,您确保一次只能处理1个链。