strReturnedAddress 大约需要。3 秒计算 - 但它可能快到半秒。此行触发计算
new GetCurrentCity().execute();
在那条线之后就是这条线
if(!(strReturnedAddress == null)){
test.setText(strReturnedAddress);
我希望在计算 strReturnedAddress 时执行 if 语句。
我怎样才能做到这一点?
如果需要之后的执行结果doInBackGround()
,可以将代码放入onPostExecute()
。onPostExecute
将在主线程上运行,并将传递的返回值doInBackGround()
传递给参数。
另一种方法是task.execute().get()
等待结果。但这违背了Asyntask的目的。
您可以更改 GetCurrentCity().execute();
为线程。如果是这样,您可以:
Thread blah= GetCurrentCity();
blah.run();
blah.join();
if(!(strReturnedAddress == null)){
test.setText(strReturnedAddress);
}
但这会弄巧成拙(如评论所示)