0

我有一个服务,我希望在其中执行一系列密集任务(将位图上传到某个服务器)

假设上传功能是

uploadImage(Bitmap bitmap);

什么是最好的方法?

起初我是这样做的(记住数组 ImageMakers 可能有十几个元素):

for (MyImageMaker mim : ImageMakers){
      uploadImage(mim.getImage());
}

我的理由是,因为我没有使用 UI 线程,所以我不需要将这一系列密集任务放在另一个线程上。但后来我想也许我应该使用 ThreadPoolExecutor 来加快速度。

  ThreadPoolExecutor executor = (ThreadPoolExecutor)Executors.newFixedThreadPool(5);//5 is arbitrary
   for (MyImageMaker mim : ImageMakers){

 executor.execute(new Runnable(){
      public void run(){
        uploadImage(mim.getImage());
     } 
     }   
  }

我的第一个问题是,这是个好主意吗?

然后我想我想在上传最后一张图片后调用其他函数。使用 ThreadPoolExecutor,最好的方法是什么?

不知道最好的方法,我选择了 AsyncTask。

 private class MyTask extends AsyncTask<Void,Void,Void>{


      protected Void doInBackground(Void... arg0) {

          for (MyImageMaker mim : ImageMakers){
                    uploadImage(mim.getImage());
             }


    }

    @Override
    protected void onPostExecute(Void v) {
        anotherFunction();//needs to be called after all images uploaded

    }
}

我想知道哪种技术最好。或者,如果有更好的方法可以在服务中执行一系列密集任务。

4

1 回答 1

2

我认为IntentService是更好的方法。

protected void onHandleIntent(){
    for (MyImageMaker mim : ImageMakers){
        uploadImage(mim.getImage());
    }
}
于 2012-12-04T03:28:19.813 回答