嗨我還是比較新的android編程,我最近偶然發現了一個AsyncTasks上相當抽象的問題。AsyncTask執行後做不同的事情?
據我瞭解,在AsyncTask執行runInBackground之後,它將一個值返回給onPostExecute,它在UI中對結果進行線程處理。現在,如果我想用runInBackground返回的結果做不同的事情。我見過提出象這樣的例子(從here拍攝):
private class MyCustomAsyncTask extends AsyncTask<Void, Void, Void>{
private boolean mShouldCallMethod1;
public MyCustomAsyncTask(boolean shouldCallMethod1){
mShouldCallMethod1 = shouldCallMethod1;
}
@Override
protected Void doInBackground(Void... params) {
//code goes here..
return null;
}
@Override
protected void onPostExecute(Void result) {
if(mShouldCallMethod1){
method1();
}else{
method2();
}
}
}
但是如果我想要兩個以上的東西,onPostExecute應該做的(如方法3,方法4,等什麼當然,我?可以實現一個switch
和一些int變量來決定調用什麼方法等等,但這看起來很愚蠢和冗餘,函數返回一個結果的模型不管它的目的是什麼,對我來說似乎是非常直接的,然而在AsyncTask中,它似乎我必須指定一個目的,而且我想知道是否有AsyncTask可以實現類似功能的方法。
例如,我有一個AsyncTask帶有網址的圖片。並且此圖像可能用於填充ImageView
,或者可能會將其保存到圖庫中。所以他們基本上在runInBackground
中做了同樣的事情,但他們的結果需要以不同的方式處理。
我還是一個初學者,所以我很抱歉,如果我錯過了一些簡單的細節/概念。 預先感謝您。
如果他們做不同的事情 –
@ cricket_007感謝您的答覆你應該寫不同Asynctasks。是的,我曾考慮過這一點,但這意味着我必須反覆寫一堆相同的東西,這似乎也是多餘的。儘管如果沒有別的辦法,那就必須做。 –
答案真的取決於你想要達到的目標,而且提供的代碼樣例太過任意。 AsyncTask將提供什麼數據作爲參數'onPostExecute'?我認爲它會是同一類型的,所以需要改變它的處理方式? – PPartisan