我試圖搜索關於AsyncTack。如何在asyntack執行後更新用戶界面。 例如:我有2個java文件。AsyncTask UI更新
文件1:Myfragment.java,文件2:MyAsyntack.java
在這種情況下,我對MyFragment執行MyAsyntack。執行後,我想更新UI。
在MyAsyntack上,我正在更新數據庫(在後臺執行)。任何身體都可以幫忙?
我試圖搜索關於AsyncTack。如何在asyntack執行後更新用戶界面。 例如:我有2個java文件。AsyncTask UI更新
文件1:Myfragment.java,文件2:MyAsyntack.java
在這種情況下,我對MyFragment執行MyAsyntack。執行後,我想更新UI。
在MyAsyntack上,我正在更新數據庫(在後臺執行)。任何身體都可以幫忙?
您可以在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();
非常感謝,它的工作。我嘗試將UpdateUI更改爲線程也是工作 –
@Rahmanza,如果能夠幫助您:-),單擊旁邊的複選標記可以很好地_accept_答案。 – JonasCz
doInBackground()是在工作線程,可以用來做像網絡調用服務器這樣的繁重任務。
當數據被提取時,您可以從UI線程上的onPostExecute(..)更新UI。
p.s.返回的doInBackground將參數onPostExecute(..)
顯示一些代碼,所以我們知道你已經嘗試過。 – Siddharth