Java 等待进程完成以执行一行代码

Java 等待进程完成以执行一行代码,java,android,Java,Android,strReturnedAddress的计算大约需要3秒,但计算速度可能会快到半秒。这一行触发计算 new GetCurrentCity().execute(); 就在那一行之后是这一行 if(!(strReturnedAddress == null)){ test.setText(strReturnedAddress); 我希望在计算strReturnedAddress时执行if语句 如何实现这一点?您可以更改GetCurrentCity().execute()编码到

strReturnedAddress的计算大约需要3秒,但计算速度可能会快到半秒。这一行触发计算

new GetCurrentCity().execute();
就在那一行之后是这一行

    if(!(strReturnedAddress == null)){
        test.setText(strReturnedAddress);
我希望在计算strReturnedAddress时执行if语句


如何实现这一点?

您可以更改
GetCurrentCity().execute()编码到线程中。如果是,你可以:

Thread blah= GetCurrentCity();
blah.run();
blah.join();
if(!(strReturnedAddress == null)){
    test.setText(strReturnedAddress);
}

但这会弄巧成拙(如注释所示)

如果需要在
doInBackGround()之后执行的结果,可以将代码放入
onPostExecute()
onPostExecute
将在主线程上运行,并将
doInBackGround()的返回值传递到参数中


另一种方法是
task.execute().get()
等待结果。但这违背了的目的。

在AsyncTask类中有一个名为
onPostExecute
的方法,使用它就像Slaks说的那样,如果这样做,使用线程是没有意义的。另外,你不执行线程,而是启动它。你是对的,@gabeschen。不过,这个问题似乎表明他使用异步任务是错误的,不是吗?