安卓异步任务同步化

3

我有一个预定服务(我使用BroadcastReceiver和AlarmManager进行调度)。 该服务使用AsyncTask执行一些长时间运行的操作。

  1. 连接到服务器
  2. 检查是否有更新
  3. 如果存在,则加载更新
  4. 执行数据更新操作

我从onStart方法中调用任务,如下所示:

onStart(...){
...
new AsyncUpdate(...).execute(...);
}

用户可以手动执行更新操作(按下运行服务的按钮)。那么如果他在执行异步更新任务期间按下按钮,会发生什么情况?根据参考资料,将创建新的工作线程,因此需要进行同步。我使用来自我的服务类的静态参数来实现:

synchronized(MyService.runLock){//public static Object runLock = new Object();
...perform download and update operations
}

这是否正确?

我之前使用过:remote service,所以服务在单独的线程中执行,我不需要在它们之间进行同步,因为我知道只有一个线程。

2个回答

3
您可以使用 getStatus() 方法。
保留您的 AsyncUpdate 引用,并查看它是否返回 RUNNING。

2
如果您不介意将操作排队,那么IntentService可能会对您有用。它处理自己的队列,并在工作线程上依次执行每个请求。当它没有任务可执行时,它会自动停止。

我可以在这种服务中使用IPC吗? - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接