我有一个预定的服务(对于预定,我使用一个广播接收器和AlarmManager的捆绑包)。服务使用asynctask执行一些长时间运行的操作。
连接到服务器
检查一些更新
加载更新(如果存在)
执行数据更新操作
我从onstart方法调用任务,如下所示:
onStart(...){
...
new AsyncUpdate(...).execute(...);
}
用户可以手动执行更新操作(他按下运行服务的按钮)。
那么,如果他在执行asyncupdate任务时按下按钮呢?根据引用,将创建新的工作线程,因此我需要同步它们。
我使用服务类中的静态参数:
synchronized(MyService.runLock){//public static Object runLock = new Object();
...perform download and update operations
}
是这样吗?
我以前使用过:远程服务,所以服务在一个单独的线程中执行,我不需要在这些线程之间进行同步,因为我知道我只有一个线程。
最佳答案
你可以使用getStatus()方法。
保留对AsyncUpdate
的引用,看看它是否返回running。