我有做一個的AsyncTask的東西:傳遞參數的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);
請問FOO中的AsyncTask背景值永遠是舊的價值?或者,在AsyncTask執行任務之前,foo的值是否設置爲0?
謝謝!
我不想讓他們溝通。我想將foo的值發送到另一個線程中的服務器(而不是拖延應用程序)。但同時,我可以將foo的值設置爲另一個值(在主線程中)以繼續使用該新值的主線程計算,而不影響傳遞給AsyncTask的值? – sile 2012-04-29 09:54:57
但是,如果您同時更改線程和主線程中的值,則會出現問題,如果要訪問共享變量,則必須使用同步塊鎖定acces:http://tutorials.jenkov的.com/java的併發/ synchronized.html。 – Moss 2012-04-29 11:08:44
是的,但它只在主線程中更改,而不是在AsyncTask中(它只是發送到服務器)。也許我應該拿一份foo的副本... – sile 2012-04-30 08:58:18