【问题标题】:Android Asynk TaskAndroid 异步任务
【发布时间】:2010-02-26 23:15:18
【问题描述】:

内部有这样一个循环的异步任务是一个好习惯吗?

while (true) { 
check queue and request API

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

谢谢

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

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

    那么,问题是:是什么触发了排队的事情?

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

    如果触发器是时间的流逝(例如,我们想每 10 分钟检查一次外部服务器),我会使用 AlarmManager 并考虑从 AsyncTask 和 Service 切换到使用 IntentService .

    【讨论】:

      【解决方案2】:

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

      我的程序有两个服务:

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

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

        while i有数据要上传

        mFirstService.putMessage(请求)。

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

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

      希望你能理解我的问题。

      谢谢

      【讨论】:

        猜你喜欢
        • 2012-10-26
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        • 2021-07-05
        • 2016-11-23
        • 2013-11-14
        相关资源
        最近更新 更多