我面臨着有一個異步任務的問題,但我需要它使用兩次,因爲每次我改變GUI的不同部分(更新進度欄)。Android異步任務 - 哪個活動喚起了它?
有什麼辦法如何確定if - else子句,它調用哪個活動,然後爲它們中的每一個都做適當的函數?
編輯:呵呵,答案是這裏,現在沒有......
感謝
我面臨着有一個異步任務的問題,但我需要它使用兩次,因爲每次我改變GUI的不同部分(更新進度欄)。Android異步任務 - 哪個活動喚起了它?
有什麼辦法如何確定if - else子句,它調用哪個活動,然後爲它們中的每一個都做適當的函數?
編輯:呵呵,答案是這裏,現在沒有......
感謝
你可以抱着它包含它從開始活動/上下文中的成員變量。
//pseudocode
AsyncTask task = new AsyncTask();
task.mActivity = this;
task.execute();
裏面doInBackground
只是檢查活動:
//pseudocode
if (mActivity instanceof MyActivity) {
// ....
} else {
// ....
}
從執行的AsyncTask提取代碼,並委派到活動。例如:
public interface MyDelegate {
public void updateProgress(....)
}
你的AsyncTask需要委託並調用它,當appropiate:
public class MyAsyncTask .... {
public MyAsyncTask(MyDelegate myDelegate) { ... }
// somewhere in your code (probably onProgressUpdate)
myDelegate.updateProgress(...)
}
你的活動/ IES貫徹/ s的委託:
public class MyActivity extends Activity implements MyDelegate {
public void updateProgress(...) {
// update ui
}
// somewhere in your code:
new MyAsyncTask(this).execute(...);
}