Android AsyncTask同步

问题描述

| 我有一个预定的服务(为了进行预定,我使用了broadcastReceiver和AlarmManager的捆绑)。服务使用AsyncTask执行一些长期运行的操作。 连接到服务器 检查一些更新 加载更新(如果存在) 执行数据更新操作 我从onStart方法调用任务,如下所示:
onStart(...){
...
new AsyncUpdate(...).execute(...);
}
用户可以手动执行更新操作(他按下运行服务的按钮)。 那么,如果他在执行AsyncUpdate任务期间按下按钮怎么办?根据参考,将创建新的工作线程,因此我需要对其进行同步。 我为我的Service类使用了一个静态参数:
synchronized(MyService.runLock){//public static Object runLock = new Object();
...perform download and update operations
}
那是对的吗? 我之前使用过:remote服务,因此该服务在单独的线程中执行,并且我不需要这些之间的同步,因为我知道我只有一个线程。     

解决方法

您可以使用getStatus()方法。 保留您的ѭ2的参考,并查看它是否返回RUNNING。     ,如果您不介意正在排队的动作,则可能是IntentService对您有用。它处理自己的队列,并在工作线程上依次执行每个请求。当它用尽工作时,它将自行停止。