1

[编辑]只是为了让它更短。我知道如何从 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);
            }
        });
    }

这时候我有整个 OtherClass.performSomethingThatTakesTime(query)doInBackground 里面,我通过代码使用publishProgress(value). 但就像我说的那样,我希望将代码放在不同的类中,但我可以从不同的类更新 UI 的进度吗?

4

2 回答 2

0

你可以在这里找到你的答案..希望它会有所帮助

http://www.codingforandroid.com/2011/06/basic-asynctask-with-progress-bar.html

另见 - http://mobileorchard.com/android-app-developmentthreading-part-2-async-tasks/

另请参阅 -Android:AsyncTask,如何更新 ProgressDialog 增量

于 2012-10-22T05:32:50.710 回答
0

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

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

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

于 2012-10-21T18:25:28.410 回答