2017-05-26 151 views
1

在我的一個項目中,我必須從服務器下載大約20到25個json文件數據,並且必須解壓縮以便有2個進程1.download 2解壓縮它。 我已經使用了2個異步任務。 1下載和第二個解壓縮..我從第一次post執行第二次異步。 我想這樣做..如果一個文件下載開始第二個異步任務解壓下載的文件...但我首先面臨下載所有的文件,然後開始解壓縮...我怎麼能克服這個? 我做android 2異步任務運行pirellarly

DownloadFileAsync myTask = new DownloadFileAsync(); 
     myTask.execute(params); 

和onPostExecute

fileProcessParams params = new fileProcessParams(zipFile, unzipLocation); 
     process_FileAsync process_fileAsync = new process_FileAsync(); 

     process_fileAsync.execute(params); 

,我有200MB +數據下載我在做正確使用異步任務或者我必須使用任何其他?我還必須在下載這些數據時更新UI。 由於事先

+0

那麼,'DownloadFileAsync'首先下載所有文件? –

+0

是@ cricket_007 –

+0

然後你的onPostExecute不能啓動並行線程。它發生在doInBackground中的所有事情之後。當你只下載一個文件時,你是否嘗試立即開始新線程? –

回答

2

要並行運行多個AsyncTask,您可能需要在線程池執行程序中執行。

asyncTask.execute(params); 

asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); 

注意executeOnExecutor在API中加入11

1

嘗試這個

DownloadFileAsync myTask = new DownloadFileAsync(); 
AsyncTaskCompat.executeParallel(myTask); 

AsyncTaskCompat在API 26.0-alpha壽已過時。自行承擔使用風險。

1

試着做這樣的:

private class Task1 extends AsyncTask<Void, Void, Void> { 
... 
... 
    protected void onPostExecute(Void unused) { 
    //Do Ur Unzipping work 
     new Task2().execute();//start unzipping Async Task 
    } 

} 

同樣,你」必須把新的Task3()。execute();在Task2的AsyncTask(解壓後)的onPostExecute()方法中,爲第二個文件下載並繼續像這樣

+0

是的,我做了這樣的\ –

+0

你現在得到什麼? –