UI线程和AsyncTask同步

时间:2017-06-19 20:32:20

标签: android android-asynctask

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:-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线程保持不变,如果源很大,将会有很长的延迟。