gpt4 book ai didi

java - Android 服务线程

转载 作者:行者123 更新时间:2023-12-02 07:24:44 25 4
gpt4 key购买 nike

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

假设上传功能为

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

}
}

我想知道哪种技术最好。或者是否有更好的方法来在服务中执行一系列密集型任务。

最佳答案

我认为IntentService是一个更好的方法。

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

关于java - Android 服务线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13695532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com