Android AsyncTask同步

Android AsyncTask同步

问题描述:

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

  1. 连接到服务器
  2. 检查一些更新,如果他们存在
  3. 进行数据更新操作
  4. 加载更新

我打电话从OnStart方法任务是这样的:

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

用户可以执行更新操作(他按下运行服务的按钮)。 那么,如果他在执行AsyncUpdate任务期间按下按钮呢?根据引用新的工作线程将被创建,所以我需要同步它们。 我使用静态PARAM从我的服务类吧:

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

是正确的吗?

我用过:远程服务之前,所以服务在一个单独的线程执行,我不需要这些之间的同步,因为我知道我只有一个线程。

您可以使用getStatus()方法。

保留你的AsyncUpdate的引用并查看它是否返回RUNNING或不。

+0

这就是诀窍......谢谢! – Nick 2011-05-27 07:04:12

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

+0

我可以在这种服务上使用IPC吗? – Nick 2011-05-27 07:03:38