2011-08-18 84 views
1

目前,我在AsycTask中執行繁重的任務,上傳圖像。當我通過AsycTask完成時,應用程序關閉,logcat中不顯示錯誤消息。Android:如何使UI線程等待AsycTask完成

private class SendIncidentTask extends AsyncTask<Double, Void, Void>{ 

      @Override 
      protected Void doInBackground(Double... params) { 
       lat1 = params[0]; 
       log1 = params[1]; 
       SendingIncident sincident = new SendingIncident(); 
       sincident.sendInciWithoutAttachment(lat1, log1); 
       sincident.submitWithAttachment(lat1, log1); 
       return null; 
      } 

    } 

我覺得當UI線程和AsycTask並行執行時會發生問題。如何讓UI線程等待AsycTask完成?

在此先感謝。

+0

爲什麼不只是執行中的用戶界面,任務完成後?如果只有你想要做的事情是關閉UI ... – Tigran

回答

5

使用onPostExecute方法來加載UI.This被稱爲automaically doInBackground完成

2

我想你錯過了真正的問題,做你想做的事情會導致ANR。但是如果你想讓UI線程等待,只需將它作爲活動的一個方法執行,而不是像AsyncTask那樣執行。

+0

你說的是真的,但如果我把它留在UI線程中,操作系統認爲應用程序被絞死並提示強行關閉應用程序。無論如何,現在我移動的東西dat應該在Asyc之後執行到onPostExecute。無論如何,你是在說一些有道理的東西。非常感謝。 –

+1

如果你讓UI線程等待AsyncTask的結束,應用程序也會認爲(並且有一個很好的理由)UI線程掛起... – MByD