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 に答える