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();
}