2011-04-25 56 views
0

我面臨着有一個異步任務的問題,但我需要它使用兩次,因爲每次我改變GUI的不同部分(更新進度欄)。Android異步任務 - 哪個活動喚起了它?

有什麼辦法如何確定if - else子句,它調用哪個活動,然後爲它們中的每一個都做適當的函數?

編輯:呵呵,答案是這裏,現在沒有......

感謝

回答

2

你可以抱着它包含它從開始活動/上下文中的成員變量。

//pseudocode 
AsyncTask task = new AsyncTask(); 
task.mActivity = this; 
task.execute(); 

裏面doInBackground只是檢查活動:

//pseudocode 
if (mActivity instanceof MyActivity) { 
    // .... 
} else { 
    // .... 
} 
0

從執行的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(...); 
}