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 的值会一直是旧值吗?或者可能是 foo 的值在 AsyncTask 执行其任务之前设置为 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 回答