0

我需要将一些位图从服务器下载到 android 中。我想使用使用.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR). 但是我的执行人越来越不知所措了。所以我想,如果我推迟,那应该会有所帮助。所以我的问题是:我如何延迟执行人?我正在考虑使用handler.postDelay,但只接受可运行文件。有没有办法让它与执行者一起工作?

一个好的解决方案可能是一次运行 20 个调用,然后等待 100 毫秒以运行接下来的 20 个。有谁知道在 android 上执行此操作的方法?

@皮特

我每次调用使用一个线程。我不确定一个线程中的多个调用是否会导致问题。

@Override
protected Bitmap doInBackground(Void... params) {
   try {

      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setDoInput(true);
      conn.connect();
      InputStream is = conn.getInputStream();
      return BitmapFactory.decodeStream(is);
   } catch (IOException e) {
      e.printStackTrace();
      return null;
   }
}
4

2 回答 2

0

+1 对 cYrixmorten 使用 IntentService 的想法。根据我的经验,它比使用 AsyncTask 可靠得多,尤其是在下载大量信息时。

如果您专门处理下载图像,您是否看过Universal Image Loader?这是一个为特定目的而设计的开源库。我在几个项目中使用过它,我发现它很容易实现,它可以为你处理图像下载、线程和缓存。

希望这可以帮助!

于 2013-10-23T20:57:11.027 回答
0

如果您只想添加暂停,请在 doInBackground 中使用以下内容:

count = 1;
// use your loop of choice
for(int i = 0; i < n; i++) {
            // Do your stuff here...
    if(count % 20) { // Sleep every 20 iterations
        Thread.sleep(100);
    }
    count++;
}

但是,正如@petey 所说,代码将是一个更好的帮助。根据您正在做的事情,可能有比使用 AsyncTask(可能是 IntentService)更好的选择。

于 2013-10-23T19:01:37.710 回答