我遇到了一个异步任务的问题,但我需要使用两次,因为每次我更改GUI的不同部分(更新进度条)。
有没有办法如何确定if - else子句,它调用哪个活动,然后为它们中的每一个做出适当的功能?
编辑:呵呵,答案就在这里,现在还没有......
由于
答案 0 :(得分:2)
您可以保存一个成员变量,其中包含从中开始的活动/上下文。
//pseudocode
AsyncTask task = new AsyncTask();
task.mActivity = this;
task.execute();
在doInBackground
内查看活动:
//pseudocode
if (mActivity instanceof MyActivity) {
// ....
} else {
// ....
}
答案 1 :(得分:0)
从AsyncTask实现中提取代码并将其委托给Activity。例如:
public interface MyDelegate {
public void updateProgress(....)
}
您的AsyncTask接受委托并在适当时调用它:
public class MyAsyncTask .... {
public MyAsyncTask(MyDelegate myDelegate) { ... }
// somewhere in your code (probably onProgressUpdate)
myDelegate.updateProgress(...)
}
您的活动/实施代表:
public class MyActivity extends Activity implements MyDelegate {
public void updateProgress(...) {
// update ui
}
// somewhere in your code:
new MyAsyncTask(this).execute(...);
}