[编辑] 只是为了缩短它。我知道如何从doInBackground中更新progressDialog。我正在寻找一种方法来更新来自不同类的进度,而Async类保留在主要活动中。 [编辑]
在我的主要活动中,我有几个按钮,每个按钮执行不同的AsyncTask。 因为我想保持我的代码很好,我想在不同的类中执行doInBackground的东西,如下所示:
主要活动
@Override
protected ArrayList<Object> doInBackground(String... params) {
String query = params[0];
return OtherClass.performSomethingThatTakesTime(query);
}
@Override
protected void onPostExecute(final Object result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
sendIntentToAnotherClass(result);
}
});
}
此时我在doInBackground中有整个OtherClass.performSomethingThatTakesTime(query)
,我使用publishProgress(value)
通过代码更新进度。
但就像我说的,我更喜欢将代码放在不同的类中,但是我可以从不同的类更新UI的进度吗?
答案 0 :(得分:0)
将ProgressDialogs对象传递给AsyncTask,并在其中一个方法中更新它,该方法在UI线程上运行。
您可以为AsyncTask创建自己的自定义构造函数,然后将ProgressDialog保存在全局变量中。
请在此处查看在UI线程上运行的方法:http://developer.android.com/reference/android/os/AsyncTask.html - 查看不同的方法(onPreExecute,onPostExecute,publishProgress等)。
答案 1 :(得分:0)