从外部异步类更新progressDialog

时间:2012-10-21 18:18:01

标签: android android-asynctask progressdialog

[编辑] 只是为了缩短它。我知道如何从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的进度吗?

2 个答案:

答案 0 :(得分:0)

将ProgressDialogs对象传递给AsyncTask,并在其中一个方法中更新它,该方法在UI线程上运行。

您可以为AsyncTask创建自己的自定义构造函数,然后将ProgressDialog保存在全局变量中。

请在此处查看在UI线程上运行的方法:http://developer.android.com/reference/android/os/AsyncTask.html - 查看不同的方法(onPreExecute,onPostExecute,publishProgress等)。

答案 1 :(得分:0)