2013-03-13 60 views
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(); 
} 

回答