如何解决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对您有用。它处理自己的队列,并在工作线程上依次执行每个请求。当它用尽工作时,它将自行停止。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。