2015-04-12 78 views
-3

我試圖搜索關於AsyncTack。如何在asyntack執行後更新用戶界面。 例如:我有2個java文件。AsyncTask UI更新

文件1:Myfragment.java,文件2:MyAsyntack.java

在這種情況下,我對MyFragment執行MyAsyntack。執行後,我想更新UI。

在MyAsyntack上,我正在更新數據庫(在後臺執行)。任何身體都可以幫忙?

+0

顯示一些代碼,所以我們知道你已經嘗試過。 – Siddharth

回答

1

您可以在AsyncTask中設置一個接口並在onPostExecute中調用它來更新UI。

public inteface UpdateUI() 
{ 
    public void update(); 
} 

然後在您的AsyncTask聲明updateUI這樣的:

UpdateUI updater; 
public MyAsyntack (UpdateUI updater) 
{ 
    this.updater = updater; 
} 
@Override 
protected void onPostExecute(String result) 
{ 
    super.onPostExecute(result); 
    updater.update(); 
} 

終於在你的活動:

MyAsyntack myAsyncTask = new MyAsyntack(new UpdateUI(){ 
        //how you want to update UI 
        } 
        ); 
myAsyncTask.execute(); 
+0

非常感謝,它的工作。我嘗試將UpdateUI更改爲線程也是工作 –

+1

@Rahmanza,如果能夠幫助您:-),單擊旁邊的複選標記可以很好地_accept_答案。 – JonasCz

0

doInBackground()是在工作線程,可以用來做像網絡調用服務器這樣的繁重任務。

當數據被提取時,您可以從UI線程上的onPostExecute(..)更新UI。

p.s.返回的doInBackground將參數onPostExecute(..)