2017-06-19 91 views
-1

如何保持UI线程等待,直到我从AsyncTask获取数据。 我试图从服务器加载一些信息和图像,并分别显示到textview和imageview。但是UI线程在后台线程完成任务之前访问该字段。所以空值被检索和应用程序崩溃。UI线程和AsyncTask同步

+0

setText&Image in overriden onPostExecute AsyncTask方法,它在UI线程中调用并在AsyncTask终止之后。 –

回答

0

在完成后台任务后,您可以更新AsyncTask的onPostExecute中的UI。

对于崩溃,通过访问UI线程上的字段=>您需要将此代码也转换为onPostExecute方法。

所以所需的数据将可用,该字段将有一个值。 所以崩溃问题可以解决。

-1

如果您正在构建,基本上擦伤HTML源代码的应用程序,然后您处理这个“串”,你所能做的就是

private class Scrapper extends AsyncTask<String, Void, Void> { 

@Override 
protected Void doInBackground(String... params) { 
    //Get the source here 
} 

然后在onCreate方法

Scrapper scrapper = new Scrapper(); 
String URLSource = scrapper.execute("url here").get(); 
//Additional code to manipulate the string 

然而通常不建议这样做,因为显然它会将整个UI线程置于保持状态,并且如果源很大,则会有很长的延迟。

+0

如果有人低估,他们是否介意解释为什么? –