是一个很好的做法,在这里有一个像这样的循环的异步任务吗?
while (true) {
check queue and request API
因为我需要等待我的活动和服务需求与APi沟通。
由于
答案 0 :(得分:0)
我假设“队列”是一个Java队列,可能是LinkedBlockingQueue
。如果是这样,那个队列是不必要的,因为AsyncTask
有一个队列可以与其线程池一起使用。
所以,问题是:是什么触发了队列中的事情?
如果触发器是用户事件(例如,菜单选项,按钮按下),只需让它启动AsyncTask
,或者让Service
启动AsyncTask
。该工作将由AsyncTask
系统排队。
如果触发器是时间的推移(例如,我们希望每10分钟检查一次外部服务器),我会使用AlarmManager
并考虑从AsyncTask
和Service
切换使用IntentService
。
答案 1 :(得分:0)
我有一个优先级队列,以便首先选择对API的重要调用。
我的计划有两项服务:
在将消息添加到队列时调用API。对api的调用是由Asinc Task以这种方式进行的:
messages.add(request);
new DownloadApiTask().execute();
其他服务正在更新本地数据库。为此,我有一个循环,我在其中调用第一个服务,以便从API获取数据。基本结构是:
while i
有数据要更新
mFirstService.putMessage(请求)。
很好,问题是每次X调用都有一个被拒绝的执行异常,我想这可能是因为我每次收到消息都会调用asinc任务。
为此,我正在考虑使用asinck任务检查队列而不是执行它。
我希望你能理解我的问题。
由于