Android Asynctask

时间:2010-02-26 23:15:19

标签: android android-asynctask

是一个很好的做法,在这里有一个像这样的循环的异步任务吗?

while (true) { 
check queue and request API

因为我需要等待我的活动​​和服务需求与APi沟通。

由于

2 个答案:

答案 0 :(得分:0)

我假设“队列”是一个Java队列,可能是LinkedBlockingQueue。如果是这样,那个队列是不必要的,因为AsyncTask有一个队列可以与其线程池一起使用。

所以,问题是:是什么触发了队列中的事情?

如果触发器是用户事件(例如,菜单选项,按钮按下),只需让它启动AsyncTask,或者让Service启动AsyncTask。该工作将由AsyncTask系统排队。

如果触发器是时间的推移(例如,我们希望每10分钟检查一次外部服务器),我会使用AlarmManager并考虑从AsyncTaskService切换使用IntentService

答案 1 :(得分:0)

我有一个优先级队列,以便首先选择对API的重要调用。

我的计划有两项服务:

  • 在将消息添加到队列时调用API。对api的调用是由Asinc Task以这种方式进行的:

    messages.add(request);  
    new DownloadApiTask().execute();
    
  • 其他服务正在更新本地数据库。为此,我有一个循环,我在其中调用第一个服务,以便从API获取数据。基本结构是:

    while i有数据要更新

    mFirstService.putMessage(请求)。

很好,问题是每次X调用都有一个被拒绝的执行异常,我想这可能是因为我每次收到消息都会调用asinc任务。

为此,我正在考虑使用asinck任务检查队列而不是执行它。

我希望你能理解我的问题。

由于