如何保持UI线程等待,直到我从AsyncTask获取数据。 我试图从服务器加载一些信息和图像,并分别显示到textview和imageview。但UI线程在后台线程完成其任务之前访问该字段。因此检索空值并且应用程序崩溃。
答案 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线程保持不变,如果源很大,将会有很长的延迟。