0
我正在为我的android项目使用外部库。有了这个库,我从流Mp3 url获取ID3标签。该代码使用URLConnection来达到链接,然后获取标签信息。但问题是它是一个非常缓慢的过程。创建多个AsyncTask
在主线程上执行此操作时,需要超过2分钟才能从其URL中获取25首歌曲的ID3标签。所以我决定使用多个AsyncTasks来让这个过程更快,我使用下面的代码。它变得更快了一点,但在2分钟之内仍然有几秒钟。当我从DDMS中检查线程选项卡时,我发现在运行时期间,只有6个AsyncTask被创建并运行。
我的问题是,我该如何增加在这个循环中运行的AsyncTask的数量。
counter=0;
for (final SongDetail e : songs) {
new AsyncTask<Void , Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
MP3 mp3 = new MP3(e.getLink());
e.setTitle(mp3.getTitle());
e.setArtist(mp3.getBand());
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
counter++;
if(counter==songs.size()) {
Log.d("KA","loop finished");
}
}
}.execute();
}