0

何かを行う AsyncTask があります。

private class Task extends
        AsyncTask<Foo, Void, Boolean> {

    @Override
    protected Boolean doInBackground(Foo... params) {
        // send foo to server;
    }
}

私のメインクラスでは、次のようなことをします:

new Task().execute(foo);
foo.setValue(0);

AsyncTask バックグラウンドの foo の値は常に古い値になりますか? それとも、AsyncTask がそのタスクを実行する前に foo の値が 0 に設定されているのでしょうか?

ありがとう!

4

1 に答える 1

0

非同期タスクは別のスレッドで実行されます。スレッド間の通信は、ハンドラーを使用したスレッド メッセージングを通じて行う必要があります。あなたがやっているように、非同期タスクのメンバーの値を変更することはできません。

これは、スレッド、非同期タスク、およびハンドラーに関するすべての優れたチュートリアルです: http://www.vogella.com/articles/AndroidPerformance/article.html

ハンドラを使用したその他の例: http://code.google.com/p/meneameandroid/source/search?q=handleMessage&origq=handleMessage&btnG=Search+Trunk、ハンドラを使用してアニメーションを実行: http://code.google.com /p/android-page-curl/source/browse/trunk/src/com/mystictreegames/pagecurl/PageCurlView.java

于 2012-04-29T09:50:21.167 に答える