2013-03-02 2 views
1

두 명의 arraylists가 있습니다. 각각 하나의 URL이 있습니다. 이 URL에서 비트 맵을 다운로드하고 싶습니다. 내 코드는 다음과 같이 바뀝니다.안드로이드에서 비트 맵 병렬 처리 다운로드

private class downloading extends AsyncTask<ArrayList<String>, Void, ArrayList<Bitmap>> { 

    @Override 
    protected ArrayList<Bitmap> doInBackground(ArrayList<String>... params) { 
     downloadBitmaps(params[0]); 
     downloadBitmaps(params[1]) 
    } 

잘 작동합니다. 그러나 두 번째 arraylist의 비트 맵을 다운로드하기 위해 새 스레드를 만들고 싶습니다. 하지만 그렇게 할 경우 ConcurrentModificationException을 피하기 위해 downloadBitmaps 메서드에서 키워드를 동기화 할 때 사용해야합니다. 하지만 그렇게하면 다운로드 프로세스가 빨라지지는 않을 것입니다. 누구든지 비트 맵을 안전하게 다운로드 할 수있는 방법을 제안 할 수 있습니까?

+2

어디서 ConcurrentModificationException을 사용합니까? show downloadBitmaps 및 onPostExecute 코드입니다. 컬렉션에 비트 맵을 배치합니까? 그런 다음 Synchronized 또는 Concurrent 버전을 사용하십시오. 또는 onPostExecute 메소드에서 스토리지를 수정하십시오. – Leonidos

답변

1

downloadBitmaps (params [1])에 대해 두 번째 AsyncTask를 사용/시작하십시오.