【发布时间】:2012-01-19 00:32:38
【问题描述】:
我正在尝试使用以下代码来获取 result 值,但它似乎永远不会更新。我正在检查名为startPosting() 的类中的结果:
public class PostDataThread extends AsyncTask<Void, Void, Void> {
String [] data;
Context context;
int result = 0;
public int startPosting(int type,String data[], Context c) {
this.data = data;
this.context = c;
this.execute();
return result;
}
@Override
protected Void doInBackground(Void... params) {
Connect c = new Connect();
c.start(Constant.RECEIVED_MESSAGE, data, context);
result = 444;
return null;
}
protected void onPostExecute(Integer result) {
//
}
}
【问题讨论】:
-
什么是
result?请更清楚地解释您的问题。 -
@MisterSquonk 结果(int) 是可变的。我在声明时将其初始化为任意值。执行doInBackground方法(this.execute()从同一个类调用)后,结果没有变化
-
我们要么不知道
Connect是什么。c.start(...)是否有可能返回与以前相同的结果?请提供更多源代码,以便我们为您提供帮助并了解发生了什么。 -
@Rafael T connect 在后台做一些事情。是的,有可能返回相同的结果。但是,我尝试将其修改为“result = newValue;”。但是,同样的旧值。而且我也无法在调试模式下跟踪“结果”!
-
你什么时候检查
result的值?在onPostExecute之后,还是您希望在调用AsyncTask之后立即设置result?不要忘记 AsyncTask 是异步的。
标签: java android android-asynctask