3 回答

TA貢獻1803條經驗 獲得超3個贊
使用AsyncTask獲得結果的一種干凈方法是使用回調接口。
這是此概念的一個簡單示例:
interface AsyncTaskCompleteListener<T> {
public void onTaskComplete(T result);
}
然后在你的B班上:
class B implements AsyncTaskCompleteListener<String> {
public void onTaskComplete(String result) {
// do whatever you need
}
public void launchTask(String url) {
A a = new A(context, this);
a.execute(url);
}
}
您現在應該將以下代碼添加到您的A類中:
class A extends AsyncTask<String, Void, String> {
private AsyncTaskCompleteListener<String> callback;
public A(Context context, AsyncTaskCompleteListener<String> cb) {
this.context = context;
this.callback = cb;
}
protected void onPostExecute(String result) {
finalResult = result;
progressDialog.dismiss();
System.out.println("on Post execute called");
callback.onTaskComplete(result);
}
}
這樣,您無需顯式地等待任務完成,而是您的主代碼(可能是主UI線程)在正常的android事件循環中等待,并且onTaskComplete方法將被自動調用,允許在那里處理任務結果。

TA貢獻1946條經驗 獲得超3個贊
你能再詳細點嗎?我目前正在嘗試轉換此方法:public static int invokeWebServiceRequest(String uri,String username,String password,String targetKey); 在擴展AsyncTask的類中。我如何將那些參數(從舊方法中)傳遞給doInBackground(Params ...)?謝謝!
- 3 回答
- 0 關注
- 432 瀏覽
添加回答
舉報